繁体   English   中英

JAVA:无法运行jar文件

[英]JAVA: Unable to run a jar file

我是JAVA的新手,因此尝试无法弄清我创建的项目出了什么问题。

我在eclipse中创建了一个JAVA项目,并导出了一个jar(不是可运行的jar)。 我在导出时未选中.project和.classpath文件选项。 现在,我试图运行该jar并获取NoClassDefFoundError:

我正在粘贴命令和以下错误:

C:\Users\Anjali>"C:\Program Files\Java\jre7\bin\java.exe" -classpath D:\Web\Hbas
eGateway\bin;C:\Users\Anjali\Downloads\Hbase\hbase-0.94.5-security.jar;C:\Users\
Anjali\Downloads\Hbase\lib\hadoop-core-1.0.4.jar;C:\Users\Anjali\Downloads\Hbase
\py4j0.7.jar -jar D:\Web\HbaseGateway\bin\HBaseGateway.jar
Exception in thread "main" java.lang.NoClassDefFoundError: py4j/GatewayServer
        at hbase.gateway.HBaseGatewayEntryPoint.main(HBaseGatewayEntryPoint.java
:22)
Caused by: java.lang.ClassNotFoundException: py4j.GatewayServer
        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)
        ... 1 more

现在,有趣的是,我能够使用以下命令运行主类。 在下面的命令中,我删除了-jar开关,并将主类传递给java.exe。

C:\Users\Anjali>"C:\Program Files\Java\jre7\bin\java.exe" -classpath D:\Web\Hbas
eGateway\bin;C:\Users\Anjali\Downloads\Hbase\hbase-0.94.5-security.jar;C:\Users\
Anjali\Downloads\Hbase\lib\hadoop-core-1.0.4.jar;C:\Users\Anjali\Downloads\Hbase
\py4j0.7.jar hbase.gateway.HBaseGatewayEntryPoint
Gateway Server Started

为什么会引发NoClassDefFoundError 我在这里想念什么吗?

为了使-jar选项起作用,必须在清单中添加Main-class键。 请参阅Java命令文档http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/java.html

-jar选项

执行封装在JAR文件中的程序。 第一个参数是JAR文件的名称,而不是启动类的名称。 为了使此选项起作用,JAR文件的清单必须包含Main-Class:classname格式的行。 在这里,类名标识具有公共静态void main(String [] args)方法的类,该方法用作应用程序的起点。

当您使用-jar选项时,也会从MANIFEST.mf文件中读取类路径。 从文档中获取-jar选项:

使用此选项时,JAR文件是所有用户类的源,而其他用户类路径设置将被忽略。

这意味着您必须在清单文件的“ Class-Path部分中添加所有依赖项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM