我从一个简单的代码生成(在eclipse中)test.jar文件:
package testJawka;
public class VarArgsDemo {
public static void main(String[] args) {
if (args.equals("1")){
System.out.println("test 1");
} else if (args.equals("2")){
System.out.println("test 2");
}
}
}
并在命令行(win7)中得到如下结果:
C:\DATA>java -jar test.jar -D 1
Exception in thread "main" java.lang.UnsupportedClassVersionError: testJawka/VarArgsDemo : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: testJawka.VarArgsDemo. Program will exit.
一般来说,我想检查它是如何工作的我的意思是jar文件有一些属性。也许这是jar文件的错误。有人可以帮助我吗?
答案 0 :(得分:1)
不支持的major.minor版本51.0
意思是,使用更高JDK版本编译的源代码,它由较低的JDK版本运行。
答案 1 :(得分:0)
我对您的代码有两条评论:
正如fge所说,Main函数中的args具有数组的类型,而不是String,你应该像这样访问像args_0 = args[0]
这样的args。
我没有检查过,但我认为Java会将'-D'提示视为args,换句话说,程序中的args应该有两个参数args[0] = "-D"
和{ {1}}。
在这里评论:
args[1] = "1"
使用命令“package testJawka;
public class VarArgsDemo {
public static void main(String[] args) {
if (args.length > 0) {
if (args[0].equals("1")) {
System.out.println("test 1");
} else if (args[0].equals("2")) {
System.out.println("test 2");
}
}
}
}
”,应该可以试试。
以防您可能遇到路径和包问题: 假设您将项目“testJawka”放在目录“C:\ tmp”下。 你应该访问“c:\ tmp \ testJawka”,打开comman行:
java -jar test.jar 1
这应该在“c:\ tmp \ testJawka”下生成.class文件“VarArgsDemo.class”。
然后您可以在命令行中执行该程序,但请记住在命令行中将目录更改为“c:\ tmp”:
c:\tmp\testJawka>javac VarArgsDemo.java
如果要生成可执行jar文件,请在命令行中转到目录“c:\ tmp”:
c:\tmp>java testJawka.VarArgsDemo 1
这将在目录“c:\ tmp”。
下生成test.jar文件然后在目录“c:\ tmp”中,在命令行中执行jar文件:
c:\tmp>jar -cef testJawka.VarArgsDemo test.jar testJawka
希望它对你有用。