我已经看到这个问题了很多,我确实检查了其他问题,但没有一个回答似乎符合我的问题。
我是Java的新手,所以我可能做了一些愚蠢的事。我在CentOS 6.4和OpenJDK 1.7上使用Eclipse Juno Service Release 2.
我创建了一个Java项目,然后在/ src下创建了一个包“spi_qa”。然后我创建了一个名为Program.java的类和另一个TestCaseConfiguration.java。我希望程序的入口点是程序。这是代码的简化版本:
package spi_qa;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import au.com.bytecode.opencsv.*;
public class Program {
static String configDirectory = "/spi/share/QA/conf";
static String csvFile = "/spi/share/QA/csv/testcases.csv";
public static void main(String[] args) {
System.out.println("- Starting QA Test Suite -");
// Some QA stuff
System.out.println("- QA Test Suite completed -");
}
我有以root身份运行它(不要问),我不能在Eclipse中这样做,所以我继续通过File> Export> Java>导出程序。 JAR文件,选择了我的“spi_qa”包及其中的所有文件,并选择spi_qa.Program作为Main类。出口很好。但是,当我运行它时,我得到了这个:
[root@localhost Downloads]# java -cp . spi_qa.jar
Error: Could not find or load main class spi_qa.jar
[root@localhost Downloads]#
我完全不知道那是怎么回事。
我查了一下,我有相应的:
[root@localhost Downloads]# java -version
java version "1.7.0_19"
OpenJDK Runtime Environment (rhel-2.3.9.1.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
[root@localhost Downloads]#
答案 0 :(得分:1)
错误
Error: Could not find or load main class spi_qa.jar
清楚地表明java
将您的spi_qa.jar
参数视为包含main()
方法的类的名称( jar 中的一个类 spi _ qa 包,因为点符号)。发生这种情况是因为您使用的语法用于执行Java.class
文件。
执行jar
使用
java -cp . -jar spi_qa.jar
因为,您已使用Eclipse导出Jar,Manifest.mf
详细信息必须由IDE处理。如果仍然遇到错误,请检查您的清单是否包含Main-class
属性,如
Main-class: spi_qa.Program
明确执行您的类(独立于manifest.mf条目,或在缺席时)
java -cp spi_qa.jar spi_qa.Program
答案 1 :(得分:0)
运行jar的命令是 java -jar jarFile 。
这应该可以帮助你运行jar文件,前提是它已正确打包,并且在Manifest文件中设置了Main-Class。
编辑:java命令的其他选项仍然保持不变,例如cp for classpath。
另外,为了确保您以root身份运行此文件,您是否尝试使用sudo从终端运行此文件?我认为这实际上应该可以帮助您以root身份运行它。我不太确定,但如果它工作正常,你可以实际避免所有这些jar文件创建只是为了运行这个程序。
答案 2 :(得分:0)
您可以在jar清单中添加主类,并可以直接执行jar。