我试图使用以下命令行语法运行基于java的工具:java -cp archive.jar archiveFolder.theMainClassName.Although类正在搜索,一个主类,“theMainClassName”在archive.jar中,并在输入给出的archiveFolder中,我不断收到我的类没有看到的错误。有人对这个问题有任何想法吗?预先感谢您从Jar文件中读取类的Java命令行问题
回答
这里是什么做工作一个具体的例子,这样你可以比较自己的SI tuation。
把这段代码放在任何地方,放在一个名为MainClass.java
的文件中。 (我假设一个目录中称为src
后通常你会安排源到包匹配,当然。)
package archiveFolder;
public class MainClass
{
public static void main(String[] args)
{
System.out.println("I'm MainClass");
}
}
然后运行这些命令:
# Compile the source
javac -d . src/MainClass.java
# Build the jar file
jar cf archive.jar archiveFolder
# Remove the unpackaged binary, to prove it's not being used
rm -rf archiveFolder # Or rmdir /s /q archiveFolder on Windows
# Execute the class
java -cp archive.jar achiveFolder.MainClass
结果:
I'm MainClass
你是如何构建你的jar文件的?代码是否在适当的包中?
也许与java -jar archive.jar
?
当然,假设清单指向正确的类...
你应该给你得到了确切的消息,它可能会摆脱更多的光。
编辑:有关在jar清单文件中设置应用程序入口点(主类)的信息,请参见Working with Manifest Files: The Basics。
这实际上并没有回答这个问题......他不是试图运行jar而是jar中的特定类。这几乎肯定是一个包装问题。 – 2008-11-15 22:31:39
确实theMainClassName类的顶部有以下包装线:
package archiveFolder
您需要的类文件是在相同的目录结构中声明的包。所以,如果你有这样的事情:
org/jc/tests/TestClass.class
它的源文件必须是这样的:
package org.jc.tests;
public class TestClass {
public static void main(String[] args) {
System.out.printf("This is a test class!\n");
}
}
然后,你可以使用以下方法来创建jar文件和命令行运行它(假定当前目录是在顶层,略高于ORG):
$ jar -cf testJar.jar org/jc/tests/*.class
$ java -cp testJar.jar org.jc.tests.TestClass
通常当一个从属类(静态部件)没有发现发生这种情况 - 像这样,使用的log4j:
public class MyClass {
private static Logger log = Logger.getLogger("com.example");
}
其理由是,这样的静态成员的初始化可以理解为部分类加载 - 错误导致类不可用(可加载),导致您描述的错误。
静态构造函数是另一个可能的原因:
public class MyClass {
static {
// <b>any</b> error caused here will cause the class to
// not be loaded. Demonstrating with stupid typecast.
Object o = new String();
Integer i = (Integer) o;
}
}
我认为其他人已经覆盖了一些常见的东西在这里。我会打开罐子,并确保列出了这个类。我还会仔细检查该类是否公开,并且方法是“public static void main(String [] arg)”。
- 1. Java命令行JAR文件
- 2. .jar库的Java命令行问题
- 3. Sscanf问题和从命令行读取
- 4. 从命令行读取文本文件
- 5. Java jar文件的命令行选项
- 6. 读取命令行参数,从文件
- 7. 从Java运行命令行的问题
- 8. Java类无法读取jar文件
- 9. 在java中读取命令行中的文件
- 10. 从Java执行命令的问题
- 11. Java从文件读取问题
- 12. Java文件读取问题
- 13. Java文件读取问题
- 14. java文件读取问题
- 15. NoClassDefFoundError当从Windows命令行运行Java与外部jar文件
- 16. 使用命令行从文件读取数据Java
- 17. 读取命令行Java中的财产
- 18. java程序来读取命令行的文本文件
- 19. 读取命令的输出或从文件中读取
- 20. unix命令通过传递行号从文件中读取行
- 21. 从Spring JAR读取文件
- 22. 从作为命令行争论传递的文件中读取
- 23. 从程序集中的命令行读取文件名
- 24. 从文件中读取时执行exec命令的重要性
- 25. 通过命令行从Jar运行Java类
- 26. Java/JavaFX,从项目和jar文件中读取文件
- 27. 命令行参数或读取文件
- 28. 从eclipse插件中的jar文件中读取类名
- 29. 从一堆.Java文件通过一条简单的命令从命令行跳转到一个.Jar文件
- 30. 从java中的文件中读取数据时出现问题
运行命令`jar tf`并发布结果。 剪切并粘贴您正在使用的确切命令行,以及java命令输出的确切错误消息。 –
erickson
2008-11-15 22:22:13