gpt4 book ai didi

java - 在ubuntu中使用命令行执行jar时出现问题

转载 作者:行者123 更新时间:2023-11-30 04:10:44 26 4
gpt4 key购买 nike

我在 com.test.data 包中有一个 DataMerge 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 文件,没有其他依赖 jar。所以我的第一个问题是我们能否以某种方式将依赖文件包含在 Merge.jar 中?现在我使用以下命令在 ubuntu 上运行此 Merge.jar :

java -cp /home/user/Desktop/test/*.jar -jar Merge.jar

不是一个有效的命令,我在阅读 stackoverflow 后才意识到,它给出了找不到类的错误。

现在我尝试使用以下命令

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

那么,我如何从命令行执行在 ubuntu 上使用 eclipse 在 Windows 上制作的 jar,该 jar 依赖项的名称如 commons-lang-2.5.jar、slf4j-api-1.5.5.jar、 commons-logging-1.1.1.jar

最佳答案

假设您正在执行文件 -> 导出 -> Java -> 可运行 JAR 文件,您必须关心两件事。

  1. 启动配置:这应该指向您想要启动代码执行的类。它应该定义一个 public static void main(String s[]) 函数。
  2. 库处理:根据您的情况,您需要选择“将所需的库打包到生成的 JAR 中”。

然后你就可以这样做 java -jar <your_jar>

关于java - 在ubuntu中使用命令行执行jar时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19659327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com