java - 在运行时找不到 Jar 依赖项
问题描述
我正在尝试使用我的 java 程序编译一个 jar 文件,
javac -cp dependency.jar *.java
然后使用它运行它java -cp dependency.jar mainPrgram
程序编译得很好,并且运行良好,直到使用依赖项进行函数调用。
我得到的例外如下
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/gson/Gson
at DFS.readMetaData(DFS.java:250)
at DFS.touch(DFS.java:111)
at CommandLine.<init>(CommandLine.java:41)
at CommandLine.main(CommandLine.java:132)
Caused by: java.lang.ClassNotFoundException: com.google.gson.Gson
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)
... 4 more
尝试了不同的解决方案
为什么我在 Java 中收到 NoClassDefFoundError?
但似乎没有一个工作
更新:代码在 Eclipse 中运行良好,但不能从命令行运行
用eclipse运行后,.classpath
有以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path=""/>
<classpathentry kind="lib" path="C:/Users/MyPC/Documents/projects/MusicPlayer/gson-2.8.6.jar"/>
<classpathentry kind="output" path=""/>
</classpath>
解决方案
你的程序针对 jar 成功完成。但是 jar 本身具有运行所需的依赖项。您需要将所有依赖项添加到类路径中,例如java -cp dependency.jar:subdependency.jar Main
.
推荐阅读
- c# - 从 WPF 中的单独页面访问控件
- python - 如何有效地重新索引 DataFrame 以填补索引列表中的漏洞?
- arrays - 带有订阅的 TypeScript 数组初始化
- windows - windows平台nginx传输udp包
- ios - 我的 Angular 应用程序在 iPhone 上启动,但不在 iPad 上
- python - 在 pandas 中的 groupby.size() 之后恢复索引
- java - 将数组数据从一个类发送到另一个 JAVA
- sql - SQL - 带大小写的多项选择
- c# - C# 正则表达式匹配所有锚点 - 除非它们有特定的 css 类
- php - 如何防止两个用户获得相同的电子邮件验证码