Eclipse 如何使应用程序与任何Java版本一起工作?
我已经在eclipse中创建了一个Java项目应用程序,并且正在使用JRE系统库[JavaSE-1.7] 当我制作应用程序的可执行jar文件时,然后在不同的计算机上测试它,这些计算机有不同的Java版本。问题是,由于java版本的原因,jar文件只能在某些计算机上工作 我的问题是:有没有办法让应用程序检查计算机的java版本,只使用该版本而不是用于实现项目的java版本?换句话说,您可以创建一个不依赖java版本的应用程序吗 任何建议都有很大帮助 谢谢Eclipse 如何使应用程序与任何Java版本一起工作?,eclipse,java,Eclipse,Java,我已经在eclipse中创建了一个Java项目应用程序,并且正在使用JRE系统库[JavaSE-1.7] 当我制作应用程序的可执行jar文件时,然后在不同的计算机上测试它,这些计算机有不同的Java版本。问题是,由于java版本的原因,jar文件只能在某些计算机上工作 我的问题是:有没有办法让应用程序检查计算机的java版本,只使用该版本而不是用于实现项目的java版本?换句话说,您可以创建一个不依赖java版本的应用程序吗 任何建议都有很大帮助 谢谢 谢谢你的建议和评论。但是我想我会坚持使用
谢谢你的建议和评论。但是我想我会坚持使用java 7版本,让用户知道他们需要java 7来运行它。不,没有办法检查,我想你的意思是这样的。
事实上,一方面您有编译类的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版本。我从未使用过它们,所以你最好搜索关于它们的问题(例如)。有了这些工具,编译器就会提醒您注意问题,而您不必显式地检查代码中的版本。有一种方法可以检查Java版本,但您需要多个可执行文件才能执行
您需要一个根可执行文件,它的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版本
希望这对你有用。很抱歉,花了这么长时间才得到答案。让它与任何兼容Java 7的JVM一起运行应该没有问题。你说“不行”是什么意思?有消息吗?如果你想让它在任何稍微合理的Java版本,你需要完全编写和编译它在Java 5。。。因此,我建议您找到其他方法来确保您的客户机运行Java 7,因为这确实是目前最合理的版本。@skiwi更好的是,Java 8即将推出。:-)@fge该应用程序在任何使用Java 7的计算机上都可以正常工作。但是一些较旧的版本不允许jar工作…我的意思是,当您单击jar文件时,它会显示一个Java VM启动器对话框消息,说..“找不到主类:main.main.Program将退出”-在这台计算机上,我检查了版本,它有51版。0@skiwi该应用程序适用于任何人,因此如果他们在不兼容的java版本上运行它,那么jar将无法工作。