使用命令行中的属性运行程序java

时间:2014-02-28 11:01:38

标签: java eclipse jar attributes main

我从一个简单的代码生成(在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文件的错误。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

  

不支持的major.minor版本51.0

意思是,使用更高JDK版本编译的源代码,它由较低的JDK版本运行。

答案 1 :(得分:0)

我对您的代码有两条评论:

  1. 正如fge所说,Main函数中的args具有数组的类型,而不是String,你应该像这样访问像args_0 = args[0]这样的args。

  2. 我没有检查过,但我认为Java会将'-D'提示视为args,换句话说,程序中的args应该有两个参数args[0] = "-D"和{ {1}}。

  3. 在这里评论:

    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
    

    希望它对你有用。