Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 如何使应用程序与任何Java版本一起工作?_Eclipse_Java - Fatal编程技术网

Eclipse 如何使应用程序与任何Java版本一起工作?

Eclipse 如何使应用程序与任何Java版本一起工作?,eclipse,java,Eclipse,Java,我已经在eclipse中创建了一个Java项目应用程序,并且正在使用JRE系统库[JavaSE-1.7] 当我制作应用程序的可执行jar文件时,然后在不同的计算机上测试它,这些计算机有不同的Java版本。问题是,由于java版本的原因,jar文件只能在某些计算机上工作 我的问题是:有没有办法让应用程序检查计算机的java版本,只使用该版本而不是用于实现项目的java版本?换句话说,您可以创建一个不依赖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将无法工作。