我有一个简单的程序。从头开始,我调用一个URL并将其打开。当我在intellij中运行它时,它可以正常工作,但是命令行不起作用。 另外,当我创建另一个Java程序并导入此jar时,也会遇到相同的错误。
这是我的POM.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>XMLConverter</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
</dependency>
</dependencies>
</project>
缺少依赖项
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/XML
at xmlconverter.GetXmlData.ReadString(GetXmlData.java:50)
at xmlconverter.GetXmlData.getJson(GetXmlData.java:24)
at xmlconverter.XMLConverter.main(XMLConverter.java:13)
Caused by: java.lang.ClassNotFoundException: org.json.XML
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 3 more
运行此命令时:mvn依赖项:tree我得到了正确的依赖项。
我的假设是因为我有两个.java文件。我有一个主要的,然后是代码。当全部是一个文件XMLConverter时,它运行良好。
答案 0 :(得分:2)
https://www.dropwizard.io/en/latest/getting-started.html#building-fat-jars
还将以下插件与您的maven-compiler插件一起添加,以创建jar,在下面的mainclass标记下提及您的主类路径
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.example. <Path to main class></mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins></build>