我有
mvn依赖:解决
[INFO] [dependency:resolve {execution: default-cli}]
[INFO]
[INFO] The following files have been resolved:
[INFO] junit:junit:jar:3.8.1:test
[INFO] org.jsoup:jsoup:jar:1.8.2:compile
在pom.xml中
39 <dependency>
40 <groupId>org.jsoup</groupId>
41 <artifactId>jsoup</artifactId>
42 <version>1.8.2</version>
43 </dependency>
44 </dependencies>
但是在运行代码时
java -jar /home/andref/AndroidStudioProjects/PostCrossJsoup/postcrossing-jsoup/target/postcrossing-jsoup-1.0-SNAPSHOT.jar
我得到了
Hello World!
class com.far.postcrossing.jsoup.Connect Connect fetch https://www.postcrossing.com method GET
Exception in thread "main" java.lang.NoClassDefFoundError: org/jsoup/Jsoup
at com.far.postcrossing.jsoup.Connect.fetch(Connect.java:57)
at com.far.postcrossing.jsoup.Connect.getCSRF(Connect.java:37)
at com.far.postcrossing.jsoup.Auth.goAuth(Auth.java:45)
at com.far.postcrossing.jsoup.App.main(App.java:13)
Caused by: java.lang.ClassNotFoundException: org.jsoup.Jsoup
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 4 more
这个例外它找不到依赖
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.far.postcrossing.jsoup.App</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
答案 0 :(得分:1)
从配置中,您的项目具有与jsoup
的编译依赖关系。
您的项目在执行应用程序时失败。
如果在编译期间确实需要jsoup
,那么如果maven没有下载/解析jsoup
依赖项,编译阶段就会失败。
您更有可能没有正确配置程序集插件,甚至使用错误的jar(没有依赖项的jar)。
根据Maven Assembly Plugin Page,具有依赖关系的jar的默认名称为<projectname>-<version>-jar-with-dependencies.jar
然后,要创建项目程序集,只需从默认生命周期执行正常的程序包阶段: 你需要明确地将它附加到一个阶段Execution: Building an Assembly
mvn package
当此构建完成时,您应该看到该文件中的文件 目标目录,其名称类似于以下内容:
target/sample-1.0-SNAPSHOT-jar-with-dependencies.jar
在你的情况下,预期的jar是这样的:
target/postcrossing-jsoup-1.0-SNAPSHOT-jar-with-dependencies.jar