Java 包装罐';使用Google Guava时出现的主类抛出错误
我创建了一个新项目来设置谷歌番石榴 这是我的POM.xmlJava 包装罐';使用Google Guava时出现的主类抛出错误,java,maven,guava,Java,Maven,Guava,我创建了一个新项目来设置谷歌番石榴 这是我的POM.xml <dependencies> <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifac
<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>
我可以在IDE中运行它
我可以用mvn包将其打包
当我运行它时,它抛出一个异常java.lang.NoClassDefFoundError:com/google/common/net/InetAddresses
我试图浏览解决方案。但到目前为止他们还没有成功
我猜测(基于其他问题)我缺少了
Guava
的一些依赖项 看起来google guava
本身不在类路径中,请尝试将类路径设置为您的java
命令,如下所示:
java -jar -classpath .:./{path_to_gauva_jar} target/<name>.Jar
java-jar-classpath.:/{path\u to\u gauva\u jar}target/.jar
根据您的操作系统更改分隔符。看起来像是
google guava
本身不在类路径中,请尝试将类路径设置为java
命令,如下所示:
java -jar -classpath .:./{path_to_gauva_jar} target/<name>.Jar
java-jar-classpath.:/{path\u to\u gauva\u jar}target/.jar
根据您的操作系统更改分隔符。您有两个选项:- 1) 在执行Java命令时,使用-cp或-classpath选项列出所有必需的jar文件 2) 通过在pom.xml中使用maven shade插件,将所有依赖项包括在jar中
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<finalName>uber-${project.artifactId}-${project.version}</finalName>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
org.apache.maven.plugins
maven阴影插件
2.4.2
uber-${project.artifactId}-${project.version}
包裹
阴凉处
您有两个选择:-
1) 在执行Java命令时,使用-cp或-classpath选项列出所有必需的jar文件
2) 通过在pom.xml中使用maven shade插件,将所有依赖项包括在jar中
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<finalName>uber-${project.artifactId}-${project.version}</finalName>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
org.apache.maven.plugins
maven阴影插件
2.4.2
uber-${project.artifactId}-${project.version}
包裹
阴凉处
打包jar时,需要打包依赖项以及部分依赖项。另请参阅。谢谢@OTM,我刚刚这么做了。当你打包jar时,你需要打包依赖项以及它的一部分。请参阅。谢谢@OTM,我刚刚做到了。