簡體   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