【发布时间】:2014-04-22 17:57:17
【问题描述】:
我正在尝试运行一个 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();
}
【问题讨论】:
-
org.apache.ws.commons.schema.XmlSchemaElement 被打包在一个单独的 jar 中(我猜是 XmlSchema jar 什么的。检查一下。我不是 100%)我怀疑当你创建
yourjar 你没有将它包含在你打包的 jar 中。因此,当您现在尝试运行它时,找不到它。 -
好的,我已经查看了选项并将其保存为可运行的 Jar 文件,但我在 Main Args 中的数组显然超出了边界异常,代码在 Eclipse 中运行良好,我有一直在通过堆栈溢出寻找解决方案,但奇怪的是找不到值:String path1 = args[0];字符串文件名 = args[1];
-
@Studento919 您的参数异常是由试图引用 arg[1] 引起的。它是未定义的。按照托马斯的回答。如果你有任何问题,请报告。
标签: java eclipse jar executable-jar