salesforce API jar的Maven着色jar中的java.lang.NoClassDefFoundError
我有一个导入类的Apache Maven Java项目: com.sforce.soap.enterprise.EnterpriseConnection 从IntelliJ运行项目时,我在执行代码时没有问题。但是,我希望能够从命令行以着色jar的形式运行该项目。我一直在使用“mvn包”为jar着色。当我从命令行运行jar时,我得到一个错误: 线程“main”java.lang.NoClassDefFoundError中出现异常:com/sforce/soap/enterprise/EnterpriseConnection 我的pom包括依赖项:salesforce API jar的Maven着色jar中的java.lang.NoClassDefFoundError,java,maven,jar,salesforce,Java,Maven,Jar,Salesforce,我有一个导入类的Apache Maven Java项目: com.sforce.soap.enterprise.EnterpriseConnection 从IntelliJ运行项目时,我在执行代码时没有问题。但是,我希望能够从命令行以着色jar的形式运行该项目。我一直在使用“mvn包”为jar着色。当我从命令行运行jar时,我得到一个错误: 线程“main”java.lang.NoClassDefFoundError中出现异常:com/sforce/soap/enterprise/Enterpr
<dependency>
<groupId>qa-integration.sfdc</groupId>
<artifactId>enterprise</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/enterprise-1.0.0.jar</systemPath>
</dependency>
<dependency>
<groupId>qa-integration.sfdc</groupId>
<artifactId>metadata</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/metadata-1.0.0.jar</systemPath>
</dependency>
qa-integration.sfdc
企业
1.0.0
系统
${project.basedir}/libs/enterprise-1.0.0.jar
qa-integration.sfdc
元数据
1.0.0
系统
${project.basedir}/libs/metadata-1.0.0.jar
我的阴影效果如下所示:
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<createDependencyReducedPom>false</createDependencyReducedPom>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.sunrun.integration.sfdc.metadata.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
包裹
阴凉处
*:*
META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA
假的
com.sunrun.integration.sfdc.metadata.Main
当我列出jar的内容时,我根本看不到salesforce文件 我遇到了这个问题,我的解决方案是将以下代码片段添加到pom.xml中:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>corrigo.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<!--<plugin>-->
<!--<groupId>org.apache.maven.plugins</groupId>-->
<!--<artifactId>maven-jar-plugin</artifactId>-->
<!--<version>2.4</version>-->
<!--<configuration>-->
<!--<archive>-->
<!--<manifest>-->
<!--<mainClass>corrigo.Main</mainClass>-->
<!--</manifest>-->
<!--</archive>-->
<!--</configuration>-->
<!--</plugin>-->
</plugins>
</build>
我遇到了这个问题,我的解决方案是将以下代码片段添加到我的pom.xml中:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>corrigo.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<!--<plugin>-->
<!--<groupId>org.apache.maven.plugins</groupId>-->
<!--<artifactId>maven-jar-plugin</artifactId>-->
<!--<version>2.4</version>-->
<!--<configuration>-->
<!--<archive>-->
<!--<manifest>-->
<!--<mainClass>corrigo.Main</mainClass>-->
<!--</manifest>-->
<!--</archive>-->
<!--</configuration>-->
<!--</plugin>-->
</plugins>
</build>
检查着色jar是否包含此类。该错误表示依赖项不在类路径上。您是如何构建jar的?@Silver裹尸布否jar不包含该类。@SamOrozco我正在使用“mvn package”构建,请检查着色jar是否包含该类。该错误表示依赖项不在类路径上。您是如何构建jar的?@Silver裹尸布否jar不包含该类。@SamOrozco我正在使用“mvn包”构建