当前位置: 首页 > 面试题库 >

哪个JDK发行版可以运行`javac -source 1.6 -target 1.5`?

归星驰
2023-03-14
问题内容

注:请不要 上交叉编译的所有危险评。谢谢。

我遇到一种情况,我们需要为Java 5 JVM编译Java 6源(以确保JAX-WS用法正确)。以前我们使用ant
ant脚本(显然可以)完成了此操作,但是在迁移到Maven之后,我们发现它最终以javac抱怨:

$ javac -source 1.6 -target 1.5
javac: source release 1.6 requires target release 1.6

是否有 任何 对Linux(Ubuntu的11.10,86),其中使用javac可以做到这一点的Java分配?

编辑:似乎没有,因为在javac中的限制是相同的。解决方案(使此需求消失了)是从默认的javac编译器更改为maven-compiler-
plugin中的eclipse编译器。

编辑:我发现Eclipse编译器为javadoc实用程序不同意的匿名内部类生成字节代码。我正在准备此问题的错误报告。


问题答案:

根据文档(Java5,Java6),当您遵循“交叉编译示例”中的说明时,Oracle SDK应该能够执行此操作。

Java 6应该支持1.3到1.6之间的任何版本,例如-target;它没有说明在源中使用泛型和其他“兼容”功能时会发生什么。编译器 _应该_能够剥离它们。

游戏中的另一个罪魁祸首可能是javac编译器 可能能够处理这组参数,但是 命令行工具 可能会冒犯。

在这种情况下,请使用Java CompilerAPI编写自己的命令行。这可能会带来一些其他方法无法实现的技巧。

您也可以尝试使用Eclipse编译器(请参阅“使用批处理编译器
”)。

这可能由于Java的工作方式而失败:只要X <= Y,Java X代码就可以在Java Y上运行。因此,尽管您可以轻松地为Java 6 VM编译Java1.4代码,但并非总是如此。

如果其他所有方法均失败,则编写一个预处理器,该预处理器读取源并剥离不支持的元素(例如@Override接口上的)。只要使用Java 6偶尔编译 _带有_批注的代码,转换后的代码也应该是安全的(除非您的代码剥离程序有错误…)



 类似资料:
  • 我是新来的爱奥尼亚,我已经尝试了互联网上关于这个问题的一切,但我没有找到任何合适的/匹配的解决方案。 我的问题详情: 我正在使用ionic 5,当我运行时,过了一会儿我收到了以下错误: 我已经在我的电脑(ubuntu 16.04)上安装了java、cordova和android studio,以下是一些详细信息: 命令: 结果: 命令:结果:

  • 问题内容: 首先,我了解命令行参数,但是我不想使用它,因为我想学习,而不仅仅是完成它,所以… 在哪里可以设置用于运行Netbeans的JRE / JDK? 一点背景: 我安装了JDK 1.6_10(系统是Windows Vista Business 64) 我安装了Netbeans 6.5 几周后,我卸载了Netbeans 6.5(希望通过重新安装来解决一些问题) 我还卸载了JDK 1.6_10并

  • 我已经安装了两个jdks,它们的版本是1.7和1.8。在我的.bash_profile中,我用$(/usr/libexec/java_home-v 1.7)设置JAVA_HOME变量。在bash shell中,我运行java版本,它输出1.7,但是当我运行sudo java版本时,它输出1.8。所以我实际上运行的是哪个java。

  • 我刚刚尝试在Android 4.0设备上运行使用Java8编译的应用程序。虽然我习惯于非常小心地查看Android留档中的Android API级别,以确保我只使用Android 4.0上可用的API,但我不太习惯于确保我没有使用Android 4.0上不可用的Java功能。 考虑以下代码,它试图从视图类导入initializeScrollbars()API,因为无论出于何种原因,它已从官方SDK

  • 我需要使用Weka的LibSVM实现对RSS提要中关键字的频率进行SVM分类,以将提要分类为目标类别。但根据我的数据,我不确定要运行哪个版本。 我的. arff文件通常包含以下数据: 以此类推:总共有570行,每行都包含一天的提要中关键字的频率。在这种情况下,10天内有57条feed,总共有570条记录需要分类。每个关键字都以代理项编号作为前缀,并以“频率”作为后缀。 但在其他情况下,我对频率使用

  • 我们公司需要决定使用JBPM6。5-FInal或JBPM7-FInal我找不到说明JBPM7将在哪个版本的JBOSS EAP上运行的文档 目前我们正在运行JBOSS EAP 6.4,不打算升级它。