我DataMerge
在 com.test.data 包中有一个 java 文件,它导入以下包:
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;
现在,当我创建 DataMerge.java 的 jar(比如 Merge.jar)文件时。它只包含 DataMerge.class 文件,没有其他依赖的 jars。所以我的第一个问题是我们能否以某种方式将依赖文件包含在 Merge.jar 中?现在我使用以下命令在 ubuntu 上运行这个 Merge.jar:
java -cp /home/user/Desktop/test/*.jar -jar Merge.jar
这不是我在阅读 stackoverflow 后意识到的有效命令,它给出了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
那么,我如何从命令行使用 Eclipse 在 ubuntu 上执行我的 jar,该 jar 具有类似名称的 jar 依赖项commons-lang-2.5.jar, slf4j-api-1.5.5.jar, commons-logging-1.1.1.jar
?