Tag: javac

我如何设置我的Cygwin PATH来findjavac?

我有一个Windows 7系统,我已经安装了最新的Java编译器。 我也有最新的Cygwin。 我想从Cygwin的shell中使用Java编译器。 我编辑了Cygwin中的PATHvariables,如下所示: export PATH=$PATH:"/cygdrive/C/Program\ Files/Java/jdk1.6.0_23/bin/" 我可以看到上述目录中的javac二进制文件,但是当我尝试编译我的* .java文件时,我得到: javac command not found 我在做这样的PATHvariables时做错了什么? 我还需要做点什么吗? 我是Java新手,不太熟悉cygwin。

class级文件中的$ 1是多less?

C:\ Program Files \ Java \ jdk1.6.0_05 \ CoreJava \ v1 \ v1ch2 \ WelcomeApplet> dir 驱动器C中的卷没有标签。 卷序列号是2041-64E7 C:\ Program Files \ Java \ jdk1.6.0_05 \ CoreJava \ v1 \ v1ch2 \ WelcomeApplet目录 2009-07-02 23:54。 2009-07-02 23:54 2004-09-06 14:57 582 WelcomeApplet.html 2004-09-06 15:04 1,402 WelcomeApplet.java 2个文件1,984字节 2个Dir(s)2,557,210,624字节免费 C:\ Program Files \ Java \ jdk1.6.0_05 \ […]

禁止javac警告“…是内部专有API,可能在未来版本中删除”

当我在JDK 1.7.0的OS X上编译Spring JDBC源代码时,出现以下警告: warning: CachedRowSetImpl is internal proprietary API and may be removed in a future release 如何在编译期间抑制警告消息? 我已经知道并使用Java的@SuppressWarning注解。 我正在寻找这个特定的用法来抑制我所描述的警告。 我的问题具体是,在这行代码中: @SuppressWarnings("valuegoeshere") 什么应该“valuegoeshere”被replace? 编辑:人们,我知道最好避免导致警告的代码。 通常这将是我的方法。 不过,我在这里编译第三方代码,我不想重写。 我只是想添加正确的注释来压制警告,所以我可以做一些事情的警告不要被埋没。

使用javac的内部sun类

有没有办法来禁用javac 1.6.0_22,阻止我使用JRE内部类像sun.awt.event.* ? 我不是在寻找: 这是为什么被禁止的解释。 build议使用不同的类 build议使用reflection build议使用ecj / eclipse 我只是想知道是否有可能,如果是的话。

如何在ant的build.xml中设置-Dfile.encoding?

我有ISO-8859-1编码的java源文件。 当我运行ant ,我得到“警告:编码UTF-8的不可映射的字符”。 如果我运行ant -Dfile.encoding = iso-8859-1或为每个javac语句添加编码=“ISO-8859-1” ,我可以避免这种情况。 有没有办法在build.xml中全局设置属性? <property name =“file.encoding”value =“ISO-8859-1”>不起作用。 我知道我可以添加foo = ISO-8859-1属性,并将encoding =“$ {foo}”设置为每个javac语句,但是我试图避免这种情况。

我怎样才能抑制关于弃用API的javac警告?

当我编译时,javac输出: Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details.` 我想压制这个警告。 尝试-Xlint:没有一个似乎没有帮助。

Java编译器优化

最近,我正在阅读这篇文章 。 根据那篇文章,Java编译器即javac在生成字节码时不会执行任何优化。 这是真的吗? 如果是这样,那么它可以作为中间代码生成器来实现,以消除冗余并生成最优代码?

什么是sjavac,是谁的,我如何使用它?

在OpenJDK邮件列表上有一个名为sjavac的工具。 此外,还有两个相关的JEP : JEP 139:增强javac以提高构build速度和JEP 199:智能Java编译,第二阶段 。 我的问题是: 什么是sjavac工具? 这是为谁准备的? 我如何使用它? 免责声明:自我回答问题。 只是想把这个工具的知识带到StackOverflow社区,并创build对未来sjavac FAQ的参考。

是否有可能禁用javac的静态最终variables内联?

Java静态编译器(javac)内嵌了一些静态的最终variables,并将这些值直接传递给常量池。 考虑下面的例子。 类A定义了一些常量(公共静态最终variables): public class A { public static final int INT_VALUE = 1000; public static final String STRING_VALUE = "foo"; } B类使用这些常量: public class B { public static void main(String[] args) { int i = A.INT_VALUE; System.out.println(i); String s = A.STRING_VALUE; System.out.println(s); } } 当你编译B类时,javac从A类获取这些常量的值,并在B.class中内联这些值。 结果,编译时依赖项B必须从类字节码中被擦除。 这是一个非常奇怪的行为,因为在编译时你正在烘焙这些常量的值。 而且你会认为这是JIT编译器在运行时可以做的最简单的事情之一。 有什么办法或任何隐藏的编译器选项,可以让你禁用这种内联行为的javac? 对于背景,我们正在研究为了依赖目的而进行字节码分析,这是字节码分析无法检测编译时依赖性的less数情况之一。 谢谢! 编辑 :这是一个令人头痛的问题,因为通常我们不控制所有的来源(例如定义常量的第三方库)。 我们有兴趣从使用常量的angular度来检测这些依赖关系。 […]

javac错误:只有在明确请求注解处理的情况下,类名才被接受

编译我的java程序时出现这个错误: error: Class names, 'EnumDevices', are only accepted if annotation processing is explicitly requested 1 error 这里是java代码(我在Ubuntu上运行这个)。 import jcuda.CUDA; import jcuda.driver.CUdevprop; import jcuda.driver.types.CUdevice; public class EnumDevices { public static void main(String args[]) { CUDA cuda = new CUDA(true); int count = cuda.getDeviceCount(); System.out.println("Total number of devices: " + count); for (int i = 0; i […]