使用Google Guava时java打包JAR的主类抛出错误
我创建了一个新项目来设置谷歌番石榴
这是我的POM。xml
<dependencies>
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>InetAddressTest</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
这是我的主要方法
public static void main(String[] args) throws Exception {
try {
System.out.println(InetAddresses.isInetAddress("127.0.0.1"));
} catch (NoClassDefFoundError exp) {
System.out.println(exp);
}
}
我可以在IDE中运行它
我可以用mvn package
打包它
当我运行它时java -jar target/<NAME>.jar
,它抛出一个异常java.lang.NoClassDefFoundError: com/google/common/net/InetAddresses
我试图浏览解决方案。但到目前为止他们还没有成功
我猜测(基于其他问题)我缺少了Guava
的一些依赖项
# 1 楼答案
看起来
google guava
本身不在类路径中,请尝试将类路径设置为java
命令,如下所示:根据您的操作系统更改分隔符
# 2 楼答案
你有两个选择:
1)在执行Java命令时,使用-cp或-classpath选项列出所有必需的jar文件
2)在pom中使用maven shade插件,将所有依赖项包括在jar中。xml