gpt4 book ai didi

Javac 与 1.7 的交叉编译

转载 作者:太空狗 更新时间:2023-10-29 22:40:43 30 4
gpt4 key购买 nike

小伙伴们,

我正在尝试使用 Ant 和终端进行 Javac 交叉编译。在本地和集成环境中,我在最基本的问题上遇到了同样的问题。

我在 linux 终端(以及我在 Windows 和 cmd 上的 cygwin 上)运行它:

 javac -target 1.6 -source 1.7 -bootclasspath /usr/java/jdk1.6.0_27/jre/lib/rt.jar Main.java

使用 Main.java,除了 System.out.println 之外什么都没有。

javac -version ==> javac 1.7.0_11

我收到错误消息:

javac: source release 1.7 requires target release 1.7

我在本地 Windows 机器上的配置大致相同,结果完全相同。

我的理解是,交叉编译就是使用更高版本的 jdk 编译一些与更高版本的 jdk 兼容的源代码,但传递目标版本的 rt.jar 应该是较低的。

如果目标和源相同,则它有效。

target=1.7 and source=1.7 workd fine

target=1.6 and source=1.6 worked just fine

但是我想要交叉编译,那么我做错了什么?

我很感激我能得到的所有帮助,并提前致谢。

最佳答案

您不能拥有较新版本的源和较低版本的目标。例如,在 Java 5 中,许多新特性被添加到该语言中,例如泛型、自动装箱,您不能指望 JVM 1.4 能够理解它。所以,你必须告诉编译器你的源代码是 Java 1.4 源代码。这解释了您的结果。

-target 的默认值取决于-source 的值:

  • 如果不指定-source,则-target的值为1.7
  • 如果-source为1.2,则-target的值为1.4
  • 如果-source为1.3,则-target的值为1.4
  • 如果-source为1.5,则-target的值为1.7
  • 如果-source为1.6,则-target的值为1.7
  • 对于-source 的所有其他值,-target 的值是-source 的值。

有关更多信息,请参阅 http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html

关于Javac 与 1.7 的交叉编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18320587/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com