我有一个项目叫MyTest。它有三类:
第一个类实现了工具接口(这是导致问题的类),为了简单起见,我做了空实现:
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.util.Tool;
public class A1 extends Configured implements Tool{
public static void main(String[] args) throws Exception {
System.out.println("Hello A1");
}
@Override
public int run(String[] args) throws Exception {
// TODO Auto-generated method stub
return 0;
}
}
第二类是普通类:
public class A2 {
public static void main(String[] args) throws Exception {
System.out.println("Hello A2");
}
}
第三类也是普通类:
public class A3 {
public static void main(String[] args) throws Exception {
System.out.println("Hello A3");
}
}
我将项目导出为“Runnable Jar”(即在Eclipse中:项目
我在“Launch Configuration”和“Packaged required libraries into generated JAR”中设置“A2”作为主类,输出JAR或“导出目的地”的名称是“MyTest.JAR”
现在,如果我运行该命令,则与预期一样:
java -jar MyTest.jar
它将打印:
Hello A2
如果我运行命令:
java -cp MyTest.jar A2
它将打印:
Hello A2
如果我运行命令:
java -cp MyTest.jar A3
它将打印:
Hello A3
现在的问题是,如果我运行命令:
java -cp MyTest.jar A1
我将给出以下错误:
Error: Could not find or load main class A1
我尝试了很多次,在不同的场景中,问题是相同的:当类实现“org.apache.hadoop.util.Tool”接口时,将找不到该类。
请注意:如果我在“启动配置”中将jar文件的主类设置为“A1”,那么命令“java-jar MyTest.jar”将正确运行并给出“Hello A1”,但命令“java-cp MyTest.jar A1”仍然无法找到“A1”。
那么为什么会发生这种情况,我如何在命令“java-cp MyTest.jar A1”中找到“A1”?
更新:
我现在可以通过指定所需的jar文件来解决这个问题:
java -cp MyTest.jar:"/home/mosab/workspace/Hadoop Jars/Binaries/hadoop-common-2.7.3.jar" A1
如果您有一堆jar文件,您可以将“Runnable Jar File”导出为“将所需库复制到生成的JAR旁边的子文件夹中”选项,然后:
java -cp MyTest.jar:./MyTest_lib/* A1
注意:MyTest_lib是包含所有jar文件的文件夹
如果您想传递java选项、参数或包名,那么:
java -Xms2048m -Option2 -cp MyTest.jar:./MyTest_lib/* PackageName.A1 Arg1 Arg2
要使A1正常工作,您需要在-cp中包含包含引用类的所有JAR。这可能与您用于编译A1的JAR列表相同。在Windows上,列表由“;”分隔。在Linux上,列表由“:”分隔。您看到的错误是因为它找不到A1引用的类文件。因此无法加载A1。
使用Hadoop。jar和Hadoop2。jar作为一般示例:
java -cp MyTest.jar;Hadoop.jar;Hadoop2.jar A1
我想知道如何在Eclipse中的源代码包(即/src/resources/images/或/resources/images/)内部或外部的资源文件夹中创建一个具有资源(图片、PDF)的可运行JAR。目前,我的资源在我的eclipse项目的source文件夹中,但我也在包中的它自己的文件夹中尝试过。该程序在eclipse中构建和执行得很好,但当我将其导出为可运行的jar时,在桌面上运行时,我总是得
行中出现错误(JAXBContext.newInstance): 当它作为测试用例执行时,它运行良好,使用: 或mvn:Spring:引导运行 但在使用以下方法运行jar时会导致问题: 运行java-jar并使用postman命中时出错。 版本信息 同一个jar在开发服务器上运行良好,但不在临时服务器上运行。开发和登台服务器都有相同的环境(java版本、mvn,一切都一样)。我将这些依赖项添加到p
我有一个简单的Java项目,它有一个文件输入。Java语言输入代码。java是这样的- 现在,我已经通过导出在Eclipse中创建了一个可执行的jar文件- 现在,当我尝试通过命令提示符打开它时,它工作得非常好。 但是,当我双击runnable jar文件时,我希望打开命令提示符。这里有什么问题? 谢谢
在一个项目中,我们将Hibernate与HikariCP结合使用,并且在Eclipse中一切都很好。但一旦我生成了一个jar文件(Maven),就再也找不到hikaricp了。我已经从各个可能的角度考虑了这个问题,但我无法找出问题所在。。。 坚持不懈xml 波姆。xml 如果我在Eclipse中运行此功能,则一切正常: 01:14:05,436信息HikariDataSource: 70-Hika
我有独立的应用程序,它绑定在可执行的中。在可执行的清单文件中,有一个class-path条目,其中列出了所有依赖的(包括所有的日志实现jar)。这个可执行jar还包含文件。 使用这种结构,当我使用简单的命令运行应用程序时,应用程序在正确的日志记录下运行良好。但这里的主要问题是,要更改日志级别,需要打开jar文件,而我不能要求客户端这样做。所以我将放在了jar外部,但现在所有日志记录都发生在控制台上
我在安装Psycopg2时遇到了麻烦。尝试时出现以下错误: 但问题是实际上在我的中;它运行起来没有任何问题: 我对这些错误感到困惑。有人能帮忙吗? 顺便说一下,我所有命令。我也在RHEL 5.5上。