首次使用maven后出现Java.lang.NoClassDefFoundError?

首次使用maven后出现Java.lang.NoClassDefFoundError?,java,maven,soap,Java,Maven,Soap,我一直在用java为我的公司创建一个soap服务器,最近我刚刚改用Bone CP和Maven来导入所有必需的第三方程序。在完成bone CP的实现后,我使用了server命令 jar -cvfm SoapServer.jar manifest.txt SoapServer 当我将它传输到服务器并尝试运行它时,我遇到了以下错误: Exception in thread "main" java.lang.NoClassDefFoundError: SoapServer/SoapServer (wr

我一直在用java为我的公司创建一个soap服务器,最近我刚刚改用Bone CP和Maven来导入所有必需的第三方程序。在完成bone CP的实现后,我使用了server命令

jar -cvfm SoapServer.jar manifest.txt SoapServer
当我将它传输到服务器并尝试运行它时,我遇到了以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: SoapServer/SoapServer (wrong name: com/test/SoapServer/SoapServer)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

我唯一能想到的导致问题的原因是maven没有将所需的JAR打包到程序中?如果是这样的话,我是否只需要下载它们并将它们添加到类路径中?

如果需要将所有依赖项打包到可执行jar中,然后像这样配置pom

<build>
    <plugins>
      <plugin>
         <artifactId>maven-jar-plugin</artifactId>
         <configuration>
           <archive>
             <manifest>
               <addClasspath>true</addClasspath>
               <classpathPrefix>lib/</classpathPrefix>
               <mainClass>com.something.YourMainClass</mainClass>
             </manifest>
           </archive>
         </configuration>
      </plugin>
    </plugins>
  </build>

maven jar插件
真的
解放党/
com.something.YourMainClass
上面的块将把lib/中的所有库添加到清单类路径条目中的类路径中

并将所有依赖项复制到lib目录

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.1</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/lib</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
          </execution>
        </executions>
      </plugin>

org.apache.maven.plugins
maven依赖插件
2.1
复制依赖项
包裹
复制依赖项
${project.build.directory}/lib
假的
假的
真的

是否可以在maven jar插件中添加另一个classpathPrefix条目?Like:lib/config/I希望有一个名为config的外部文件夹来为我存储属性文件在这个文件中执行更改,而不需要更改config文件夹中打包的jar文件中的属性文件。我有这个要求,我在某个时候在本地修改了插件,我应该请求pull,除了依赖项之外,您还需要向类路径条目添加什么?例如,在jar中我有:--config/bioagents.properties,用户打开jar文件来更改属性文件是不可行的。正如我看到的,我们可以将一些依赖项放在外部文件中,而不是打包在jar中,我希望对config/bioagents.properties也这样做。放入外部目录(不打包在jar文件中)。因此,一个简单的用户可以轻松地更改我的程序的属性。通常,用户在运行应用程序时更改属性文件,而不是在构建Jar时,但如果这是一个用例,则可以通过maven assembly plugin轻松完成,将其配置为打包所有依赖项,除此之外,您还可以在构建的Jar文件的相对路径中包含文件系统中的文件。谢谢您的帮助,我将尝试此方法。