草庐IT

编译时

全部标签

java - 如何使用 ANT 只编译更改的源文件

我正在尝试编写用于编译源文件夹的ant构建,这里是我用于编译的脚本target。在我的项目中,我有将近1000个.java文件。当单个.java文件发生更改时,目标往往会编译所有.java文件。这使得开发非常缓慢。我只想知道是否有任何方法或代码可以更改任务的行为,以仅编译修改或更改的.java文件而不是所有.java文件。请帮帮我。 最佳答案 据我了解,仅编译修改后的java文件是antjavac任务的默认行为。Ant使用.java文件及其对应的.class文件的时间戳来确定是否需要重新编译Java文件。我已经在很多项目中使用过它,

java - maven 正在使用 java 1.7 编译代码,但我希望它使用 1.8 进行编译

我正在使用Maven并想使用JDK1.8编译我的代码。所以我安装了JDK1.8然后(这是在Windows上)设置“路径”变量和“JAVA_HOME”PATH=C:\construction\tools\ibm_sdk80\bin;C:\construction\tools\apache-maven-3.2.5\bin;Java主页:C:\Users\satish.marathe>setJAVA_HOMEJAVA_HOME=C:\construction\tools\ibm_sdk80java版本给我:C:\Users\satish.marathe>java-versionjavaver

java - Jdk9/java-9中module-info.java编译错误如何解决

我正在尝试使用jdk-9在代码下方运行,但在使用命令编译时遇到问题命令javac-dmods.\module-info.javacom\nirav\modi\Test.java错误.\module-info.java:1:error:class,interface,orenumexpectedmodulemodule1{}^1errormodule-info.javamodulemodule1{}测试.javapackagecom.nirav.modi;classTest{publicstaticvoidmain(Stringargs[]){System.out.println("He

java - 谁提供了Java中的默认构造函数?编译器还是 JVM?

构造函数是在运行时添加的还是编译时添加的?(我猜是编译时)。请在JVM架构级别进行一些深入的解释。我阅读了各种文章..一些说编译器..还有一些说JVM。我想非常确定(证据会有很大帮助)。抱歉,如果这个问题很愚蠢(我还在消化术语)!!!提前致谢。 最佳答案 来自Oracle的Java教程:https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.htmlYoudon'thavetoprovideanyconstructorsforyourclass,butyoum

java - 在编译时禁用 Java 日志记录

我有一些Java代码,我想使用日志消息进行检测以进行调试。但是,最终(已编译)生产代码不应包含任何日志记录,因为它会减慢执行时间。Java中有什么方法可以在编译时禁用记录器吗?我不担心运行时启用/禁用记录器的日志方法中的检查会增加足迹。if(logging==enabled){//dologging}但我想在我的生产代码中避免像下面这样的参数构造:Logger.log("undefinedstate"+state+"@"+newDate());我正在使用Sun的Java编译器。 最佳答案 您是否考虑过使用{}占位符的slf4j方法。

java - 为什么 Java 编译器不支持导入继承?

在Java中,导入与(外部)类相关,因为每个(外部)类都应该在单独的文件中编码。因此,可以声称类定义之前的import...;指令与类相关联(有点像注释)。现在,如果可以继承父类的导入,那将大大减少源文件的困惑。为什么这不可能?即为什么Java编译器不应该考虑基类的导入?注意事项:可能有不止一个答案。我知道如果您让eclipse组织您的导入,这不是什么大问题,无需提及。这是关于“为什么”,而不是“如何”(a-la-this)。 最佳答案 首先,重要的是要注意并非每个类都必须在单独的文件中编码-但每个公共(public)顶级类都必须是

java - 编译 vs 翻译, "compiling"Java 到字节码?

我的理解是这样的,定义:翻译-拥有某种语言的代码,生成另一种语言的代码。Compilaton-翻译成机器代码。机器码-CPU的直接指令。现在,来自docs.oracle.com:javac-Javaprogramminglanguagecompiler编译器...?我认为它是Java翻译器,因为它生成的是代码,而不是机器代码。字节码需要解释器(JVM)才能运行,因此它绝对不是机器码。来自Wikipedia:Javaapplicationsaretypicallycompiledtobytecode同样。根据定义,我会说Java翻译为字节码。Internet上还有更多示例,我认为对此存在

java - "Cannot Find Symbol"编译错误

我的编码经验只有几年,所以这个问题应该很容易回答。我写了两个接口(interface):类和游戏。接口(interface)CLASS应该扩展接口(interface)GAME。下面是两个接口(interface)源:packageImpl;publicinterfaceGame{//METHODSANDVARS}packageImpl;publicinterfaceClassextendsGame{//METHODSANDVARS}现在,当我尝试编译第二个接口(interface)时,出现以下错误class.java:4:cannotfindsymbolsymbol:classGam

java - 模式.编译 ("\\[.+?\\]");

在此声明中,摘自Pagerank源代码:Pattern.compile("\\[.+?\\]");这个模式是什么意思?我试过研究它,它说2个斜线表示一个斜线,但是.+是什么?? 最佳答案 这个字符串文字:"\\[.+?\\]"表示这个字符串:\[.+?\]所以这个表达式:Pattern.compile("\\[.+?\\]");表示这个正则表达式:\[.+?\]意思是“文字[,后跟一个或多个字符——最好尽可能少——后跟]”。(.表示“除换行符以外的任何字符”;+?表示“我刚才所说的一个或多个,最好尽可能少”。)总的来说,正则表达式匹

java - Java 编译器是否优化了空的同步块(synchronized block)?

假设我在代码的某处写了一个空的synchronizedblock:synchronized(obj){//Nocodehere}因此,由于同步块(synchronizedblock)不包含任何代码,JIT编译器是否会通过不锁定obj来优化它,因为它没有用?Java编译器会做一些类似的技巧,例如Lockcoarsening,但是这个同步块(synchronizedblock)是否也会被优化掉?编辑:根据assylias的观点,synchronized(newObject()){//emptyblock}JIT编译器现在是否能够优化它,因为我使用的对象不会转义我的方法?