运行jar文件时main出现问题



我正在尝试运行一个jar文件,我已经在eclipse中创建了清单文件等,并指定了主入口点。我已经测试了我所有的类文件,而我需要工作的文件(TestRead.java)一直给我这个错误,我不确定为什么或如何解决它:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/ws/commons/schema/XmlSchemaElement
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.ws.commons.schema.XmlSchemaElement
    at java.net.URLClassLoader$1.run(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)
        ... 6 more

下面是命令行:

java -jar JavaWdslApp.jar

编辑:我把它保存为一个可运行的Jar文件,并尝试运行它,但出现了另一个问题,告诉我数组越界了:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

我这样称呼它:

public static void main(String[] args) {
String path1 = args[0];
String fileName = args[1];
TagDef tagDef;
String[] operations;
try {
    operations = listOperationsUnique("abc");
    System.out.println("operation:" + operations.length);
    for (int i = 0; i < operations.length; i++) {
        System.out.println("operation:" + operations[i]);
    }
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (SAXException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (ParserConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
try {
    tagDef = refheader(path1, fileName); 
    System.out.println("=================================================================");
    System.out.println("abc");
    System.out.println(abc);
    System.out.println("=================================================================");
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

第二个错误是因为您试图访问args[0]和args1,而您在命令行中没有通知任何参数。它应该看起来像这样:

java -jar JavaWdslApp.jar valueForPath1 valueForFileName

我建议您检查java命令参考。

问题出在您的jar包装上。您创建的jar文件不包含所需的依赖项。创建jar文件时,请在文件中包含所需的libs。那么你应该可以走了。

相关内容

最新更新