我正在两台具有不同JDK版本的不同计算机(相同源代码)上开发Java应用程序。有没有办法在源代码中指定JDK版本,以便IDE(例如NetBeans)在两台机器上以相同的方式编译源代码?
我的一台电脑有JDK5,另一台有JDK6。在5下,jdbc-interface
不支持6中可用的某些方法(例如NClob,XML ...),因此在6机器上编译的代码在5机器上编译的代码不起作用。现在,在使用5台机器时,我必须注释掉6件事。
答案 0 :(得分:7)
不在源代码中。您希望将IDE设置为使用Java 5 JDK进行编译。您可以通过在Java 6 JDK旁边安装Java 5 JDK并指定它(取决于IDE)来实现此目的。
或者,如果您正在使用Ant,则可以在javac任务中指定Java版本。
答案 1 :(得分:4)
不要过度复杂化问题...在所有计算机上安装相同版本的JDK,并将IDE设置为使用该版本。忽略其他版本。
答案 2 :(得分:2)
我知道这已经得到了解答但是如果你不能更新1.5到1.6那么你需要做的就是设置使用1.6编译为1.5的“源兼容性”的ide
无需在运行1.6的计算机上安装1.5,因为JDK是向后兼容的。
eclipse中的设置是首选项> Java>编译器
答案 3 :(得分:1)
您将始终必须回退并对最低版本的JDK进行编码 - 在您的情况下,您无法使用JDK版本6中引入的功能。
正如Brian所说,如果您使用配置为使用相同JDK的IDE(在您的情况下为第5版),那么它可能是最安全的。
您可以使用version
参数切换到特定的运行时版本,但这可能对您没有帮助。
另请注意,针对版本6编译代码并针对版本5运行将导致运行时错误,因为不兼容的类版本,正如您所说,尝试使用旧版本中不存在的JDBC方法。
答案 4 :(得分:0)
在NetBeans中,您可以右键单击项目属性,然后选择源版本,如果您有jdk 1.6,则可以使用以前的版本构建它
答案 5 :(得分:0)
您需要做的是指定与两个JDK(< = 1.5)支持的内容的源兼容性。例如,如果您正在构建的应用程序可能部署到仅安装了Java 1.3的环境中,则低于1.5可能是有意义的。
我知道这在Eclipse中是可行的,但不幸的是,我不熟悉NetBeans,但我相信它也是可能的。
如果有任何帮助,如果您只是从控制台运行javac
(假设您想要1.5作为基准级别),请按以下步骤操作:
javac -source 1.5 ...
如果你使用Maven(我理解NetBeans有很好的支持),这也可以作为Maven POM中的插件配置。这就是你如何做到的(来自http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html):
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.4</source>
<target>1.4</target>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>
正如布莱恩阿格纽指出的那样,也有可能在Ant中出现。
答案 6 :(得分:0)
问题是:你需要支持JVM 1.5吗?如果是这样,您的代码应该完全兼容1.5(似乎不是)。如果没有,只需将所有机器中的JVM(如已建议的那样)更新为相同的JVM版本(并且不要忘记版本次要:1.6.0_03!= 1.6.0_14)。