我在eclipse中创建了一个Java项目应用程序,我使用的是JRE系统LibraryJavaSE JavaSE-1.7。
当我为应用程序创建一个可执行的jar文件时,然后在具有不同Java版本的不同计算机上测试它。问题是,由于java版本,jar文件只在某些计算机上工作。
我的问题是:是否有其他方法让应用程序检查计算机,看看它拥有哪个java版本,而只是使用该版本而不是用于实现项目的java版本?换句话说,您可以创建一个不依赖于java版本的应用程序吗?
任何建议都有很大帮助。
谢谢
谢谢大家的建议和意见。但是我想我还是坚持使用java 7版本,让用户知道他们需要java 7来运行它。
发布于 2014-03-01 11:58:07
不,没有办法去核实,我想不是你说的那样。
实际上,一方面是编译类的Java版本(您可以选择),另一方面是运行应用程序的Java版本( JVM) (您不能选择)。
嗯,我确实相信有一种方法可以通过某些方法调用或类似的方法来检查Java版本,但是我不认为它会在这里帮助您,我的意思是我想您不能这样做:
if(java-7) {
//do try-with-resources
} else {
// do usual try-statement
}正如@skiwi所建议的那样,确保您的应用程序是针对较旧的Java版本进行编译的,并且您应该可以使用该版本的JVM及其以后的版本。我不知道是什么导致了ClassNotFound错误,但可能是JVM检查了所需的Java,如果超出可用的版本就停止。
如果您从命令行编译,就会有开关告诉javac源Java版本和目标Java版本。我从未使用过它们,所以您最好搜索有关它们的问题(即javac source and target options)。使用这些工具,编译器将警告您注意问题,而不必显式检查代码中的版本。
发布于 2014-03-25 20:59:29
是一种检查版本的方法,但是您需要多个可执行文件来完成它。
您需要一个根可执行文件,它有一个低条的最低Java版本,这样它就可以检查系统的版本,然后根据系统的Java版本启动一个可执行文件。
你是怎么做到的:
System.getProperty()允许您获取系统属性,以及其他一些东西,比如安装的应用程序的版本(如Java )。
您应该用一个类创建一个单独的JAR:
公共级发射器{
public static void main(String[] args) {
String javaVersion = System.getProperty("java.version");
// Conditional to launch Jar file
if(correctVersion) { // if version is confirmed
Runtime.getRuntime().exec("java -jar whatever.jar");
}
}}
我们需要一个根,更低条的可执行文件,是因为如果原始的可执行文件一开始就不能运行,它将如何检查Java版本?
希望这件事适合你。抱歉,花了这么久才得到答案。
https://stackoverflow.com/questions/22113813
复制相似问题