Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Java 如何在unix上运行.jar文件?_Java_Unix - Fatal编程技术网

Java 如何在unix上运行.jar文件?

Java 如何在unix上运行.jar文件?,java,unix,Java,Unix,我已经在windows中生成了.jar文件。 我必须在unix中执行该.jar文件 我正在运行这个命令(java-jarmyjar.jar),但它给出了 java.lang.UnsupportedVersionError 我在Unix中使用java 1.5.0.12版。与在Windows下相同 java -jar file.jar 检查是否安装了JDK或JRE。如果不是,请安装 设置JAVA_HOME=#JDK/JRE主目录 $JAVA_HOME/bin/JAVA-jar file.ja

我已经在windows中生成了.jar文件。
我必须在unix中执行该.jar文件

我正在运行这个命令(
java-jarmyjar.jar
),但它给出了

 java.lang.UnsupportedVersionError
我在Unix中使用java 1.5.0.12版。

与在Windows下相同

java -jar file.jar
  • 检查是否安装了JDK或JRE。如果不是,请安装
  • 设置JAVA_HOME=#JDK/JRE主目录
  • $JAVA_HOME/bin/JAVA-jar file.jar
您还应该记住JVM是不向前兼容的,所以如果您使用JDK1.6创建了一个jar文件,那么它将无法与JDK1.5一起工作

在这种情况下,您可以:

  • 将JDK1.6安装到Unix

  • 使用
    -target 1.5
    标志重新编译jar(但是由于API不兼容,您可能会得到任何类型的错误,因此第一种方法要好得多)


您是否尝试在Unix系统上使用较新版本的Java

如果您控制jar文件,那么在编译Java 1.5时是否可以将其作为目标

 java.lang.UnsupportedVersionError
您必须尝试使用本地java1.5启动一个用JDK6编译的jar

您可以:

  • 将Unix上的jvm升级到1.6
  • 或者使用
:


检查是否可以生成与1.5字节码兼容的源代码。

不支持VersionError
意味着您已使用较新版本的Java编译了Java源代码,而不是尝试运行它。Java向下兼容(较新版本的Java可以运行使用较旧版本编译的Java程序),但向上不兼容(较旧版本的Java不能运行使用较新版本编译的Java程序)

您说您正在Unix上使用Java5。你是在Windows上用Java6编译的吗?那么很明显这是行不通的

可能的解决办法:

  • 在Windows上使用Java 5编译源代码(最安全的选项)
  • 编译时使用编译器标志:
    -source 1.5-target 1.5
    (这不会保护您不使用标准库中的纯Java 6类,因此这不能完全保证您的程序在Java 5上运行时不会出错)
  • 在Unix上升级到Java 6

在Windows计算机上使用Java 5重新编译应用程序


(默认情况下,Java 6生成与Java 6兼容的字节码以使用新功能。最简单的方法是安装Java 5 JDK并使用它重新编译应用程序)

我也遇到了同样的问题。这是因为运行时和编译时JDK版本不同。更改java编译器版本后,通过eclipse创建jar。下面的链接帮助了我


您忘记了
-bootclasspath
(我刚刚在回答中添加了选项;))您忘记了
-source和-bootclasspath
参数(请参见下面的回答),感谢您在之后更改了问题。要在运行jar时传递参数,请使用java-jar file.jar arg1 arg2
  javac -source 1.5 -target 1.5 -bootclasspath /path/to/jre1.5/lib/rt.jar