執行罈子我有com.test.data包一個DataMerge
的java文件,該文件導入以下軟件包:問題而使用命令行Ubuntu的
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
現在,當我創建罐子(說Merge.jar)的文件DataMerge.java。它只包含DataMerge.class文件,沒有其他相關的jar文件。所以我的第一個問題是,我們可以以某種方式在Merge.jar中包含依賴文件嗎? 現在,我使用下面的命令的Ubuntu運行此Merge.jar:
java -cp /home/user/Desktop/test/*.jar -jar Merge.jar
哪個不我來閱讀計算器後實現一個有效的命令,並給出了Class not found
錯誤。
現在,我嘗試使用以下命令
java -cp ./*.jar Merge.DataMerge (Merge is the jar file name and DataMerge is the main class)
再次拋出以下異常。我猜這是因爲jar(commons-lang-2.5.jar)文件的名稱中的點(。)。
Exception in thread "main" java.lang.NoClassDefFoundError: //commons-lang-2/5/jar
Caused by: java.lang.ClassNotFoundException: ..commons-lang-2.5.jar
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: ./commons-lang-2.5.jar. Program will exit
所以,我如何執行我的罐子被使用在命令行具有含像commons-lang-2.5.jar, slf4j-api-1.5.5.jar, commons-logging-1.1.1.jar
名JAR依賴Ubuntu的日食窗口提出?
我做了你的建議。但是,我還有一些其他的軟件包存在於項目中。所以,那些不必要的軟件包也隨着相關的罐子一起進入最終的jar包。有什麼辦法,我只能使用選定的包的可執行jar? – Naresh