标签: javac

使用带有javac的内部sun类

有没有办法禁用javac 1.6.0_22的限制,阻止我使用JRE内部类sun.awt.event.*

不是在寻找:

  1. 解释为什么被禁止.
  2. 建议使用不同的类
  3. 建议使用反射
  4. 建议使用ecj/eclipse

我只想知道它是否可能,如果是,那么如何.

java javac internal

50
推荐指数
2
解决办法
3万
查看次数

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

关于OpenJDK邮件列表上调用的工具有一些嗡嗡声sjavac.此外,还有两个相关的JEP:JEP 139:增强javac以提高构建速度JEP 199:智能Java编译,第二阶段.

我的问题是:

  • 这究竟是什么sjavac工具?
  • 它的意图是谁?
  • 我该如何使用它?

免责声明:自我回答的问题.只是想将此工具的知识带到StackOverflow社区,并创建对未来sjavac FAQ的参考.

java javac

50
推荐指数
1
解决办法
6884
查看次数

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

我有iso-8859-1编码的java源文件.当我运行ant时,我得到"警告:编码UTF-8的不可映射的字符".如果我运行ant -Dfile.encoding = iso-8859-1或者将encoding ="ISO-8859-1"添加到每个javac语句中,我可以避免这种情况.

有没有办法在build.xml中全局设置属性? <property name ="file.encoding"value ="ISO-8859-1">不起作用.我知道我可以添加一个foo = ISO-8859-1属性并为每个javac语句设置encoding ="$ {foo}",但我试图避免这种情况.

java ant javac character-encoding

47
推荐指数
2
解决办法
8万
查看次数

如何在命令行中编译多个java源文件

我知道运行javac file1.java生成file1.classif file1.java是唯一的源文件,然后我可以说java file1运行它.

但是,如果我有2个源文件,file1.java以及file2.java,那我怎么构建程序?

java build javac

47
推荐指数
3
解决办法
12万
查看次数

无法在"/ usr/bin/java/bin/java"(-1)找到可执行文件

我的mac osx 10.7.3中有一个可疑的Java问题.以前我安装它,它工作正常.在经过一段时间的.bash_profile和.profile文件的一些更改之后,我遇到了类似的错误

Unable to locate an executable at "/usr/bin/java/bin/java"
Run Code Online (Sandbox Code Playgroud)

每当我尝试在我的终端中运行"javac"或"java"时.

echo $PATH 给出如下输出:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/sabya/Documents/Play_Framework/play-2.0:/usr/X11/bin:/usr/local/git/bin:/usr/local/mysql/bin
Run Code Online (Sandbox Code Playgroud)

我的.bash_profile看起来像:

alias start_mysql="/Library/StartupItems/MySQLCOM/MySQLCOM start"
alias stop_mysql="/Library/StartupItems/MySQLCOM/MySQLCOM stop"
export JAVA_HOME=/usr/bin/java
Run Code Online (Sandbox Code Playgroud)

输出 which java

/usr/bin/java
Run Code Online (Sandbox Code Playgroud)

它长时间困扰我,卸载和安装java并没有帮助我的运气.

我是Mac的新手,需要帮助解决这个问题.

在发布此问题之前用Google搜索并查看了SOF,但没有找到任何与我的问题相关的内容.

谢谢

Sabya

java macos javac

47
推荐指数
3
解决办法
8万
查看次数

在Java 8中,为什么Arrays没有给出Iterable的forEach方法?

我必须在这里遗漏一些东西.

在Java 5中,引入了"for-each loop"语句(也称为增强for循环).它似乎主要是为了遍历集合而引入的.任何实现该Iterable接口的集合(或容器)类都可以使用"for-each循环"进行迭代.也许出于历史原因,Java阵列没有实现Iterable接口.但是由于数组无处不在,所以javac会接受在数组上使用for-each循环(生成相当于传统for循环的字节码).

在Java 8中,该forEach方法Iterable作为默认方法添加到接口.这使得将lambda表达式传递给集合(迭代时)成为可能(例如list.forEach(System.out::println)).但同样,阵列不喜欢这种治疗方法.(我知道有解决方法).

有没有技术上的原因为什么javac无法增强以接受forEach中的数组,就像它在增强的for循环中接受它们一样?似乎可以在不要求阵列实现的情况下生成代码Iterable.我天真吗?

这对于自然使用数组的语言的新手来说尤其重要,因为它们的语法容易.切换到列表和使用是不自然的Arrays.asList(1, 2, 3).

java arrays foreach javac java-8

47
推荐指数
2
解决办法
5万
查看次数

抑制javac警告"......是内部专有API,可能会在将来的版本中删除"

当我使用JDK 1.7.0在OS X上编译Spring JDBC源代码时,我收到此警告:

warning: CachedRowSetImpl is internal proprietary API and may be removed in a future release
Run Code Online (Sandbox Code Playgroud)

如何在编译期间禁止显示警告消息?

我已经知道并使用Java的@SuppressWarning注释.我正在寻找具体用法来抑制我所描述的警告.

我的问题具体是,在这行代码中:

@SuppressWarnings("valuegoeshere")
Run Code Online (Sandbox Code Playgroud)

应该用"valuegoeshere"替换什么?

编辑:人们,我知道最好避免导致警告的代码.通常这将是我的方法.但是我在这里编译第三方代码,我不想重写.我只想添加正确的注释来抑制警告,以便我可以实际做些什么的警告不会被埋没.

java javac

45
推荐指数
4
解决办法
4万
查看次数

使用javax.tools.JavaCompiler在内存中完全编译代码

我正在使用javax.tools包(JDK 1.7)中的JavaCompiler来动态编译一些东西,如下所示:

compiler.run(null, null, "-cp", paths, "path/to/my/file.java");
Run Code Online (Sandbox Code Playgroud)

它可以工作,但我想在内存中完成所有操作(例如,传递带代码的字符串,而不是源文件,并获取字节代码而不是.class文件).我发现扩展InputStreamOutputStream参数是没有用的,因为它可能与控制台中的相同.你知道一种让run方法像这样工作的方法吗?或者您是否知道使用该getTask()方法确认的方法?(扩展FileManager看起来很简单但不是那么容易:)

java compilation javac java-compiler-api

42
推荐指数
4
解决办法
3万
查看次数

如何设置我的Cygwin PATH来查找javac?

我有一个Windows 7系统,我已经安装了最新的Java编译器.我也有最新的Cygwin.我想使用Cygwin的shell中的Java编译器.我在Cygwin中编辑了PATH变量,如下所示:

export PATH=$PATH:"/cygdrive/C/Program\ Files/Java/jdk1.6.0_23/bin/"
Run Code Online (Sandbox Code Playgroud)

我可以javac在上面的目录中看到二进制文件,但是当我尝试编译我的*.java文件时,我得到:

javac command not found
Run Code Online (Sandbox Code Playgroud)

我在设置PATH变量时做错了吗?我还需要做别的吗?我是Java的新手,对cygwin不是很熟悉.

java cygwin path javac

41
推荐指数
2
解决办法
10万
查看次数

-source和-target兼容性有什么区别?

使用Java compiler(javac)时,我们可以指定两种兼容性.一个是使用-source,另一个是使用-target.这两者有什么区别?

例如,-source 1.5-target 1.6

此外,是否有任何我们使用不同的源和目标兼容级别的情况?

java compilation javac backwards-compatibility

40
推荐指数
3
解决办法
2万
查看次数