Java 在Nexus上上载jar后,在Maven项目中发现ClassNotFound异常

Java 在Nexus上上载jar后,在Maven项目中发现ClassNotFound异常,java,maven-2,jakarta-ee,md5,ear,Java,Maven 2,Jakarta Ee,Md5,Ear,我正在使用Nexus作为存储库管理器处理一个Maven项目。简而言之,有三个部分:“业务”(打包在.jar中)、“Web”(打包在.war中)和“ear”(将整个东西打包在.ear中) 我工作得非常好,但最近我一直在尝试向存储库添加一个“自定义”jar(用于md5密码转换),但效果不太好,我做了以下工作: 从网站()获取java文件以使用md5转换字符串 在我的项目中将它作为java文件使用,它工作得非常好,然后我决定用它制作一个jar 用javac编译源代码 在上使用“jar”命令创建归档文

我正在使用Nexus作为存储库管理器处理一个Maven项目。简而言之,有三个部分:“业务”(打包在.jar中)、“Web”(打包在.war中)和“ear”(将整个东西打包在.ear中)

我工作得非常好,但最近我一直在尝试向存储库添加一个“自定义”jar(用于md5密码转换),但效果不太好,我做了以下工作:

  • 从网站()获取java文件以使用md5转换字符串
  • 在我的项目中将它作为java文件使用,它工作得非常好,然后我决定用它制作一个jar
  • 用javac编译源代码
  • 在上使用“jar”命令创建归档文件(“com/twmacinta/util/MD5-2.7.1.jar”)
  • 连接到Nexus并上传jar
  • 转到business部分中的my pom.xml文件,通过选项卡“dependency”和“add…”添加依赖项(它找到了jar,没有问题),该选项卡将此添加到my pom.xml文件中:

    <dependency>
       <groupId>com.twmacinta.util</groupId>
       <artifactId>MD5</artifactId>
       <version>2.7.1</version>
    </dependency>
    
    MD5-2.7.1.jar出现在Business和ear的MavenDependencies中,它看起来像我正在使用的任何其他库(据我所知),所以我不明白

    请帮帮我()


    Nicolas

    您的jar文件应该位于com/twmacinta/util/MD5/2.7.1/MD5-2.7.1.jar


    与其他工件相比,这就是JAR使用Maven 2+的组织方式。

    可能是应用程序没有得到正确的发布。

    听起来这个库好像没有在ear或战争中捆绑起来。
    您在哪里绑定依赖项

    • …war/web inf/lib
    • 或者…耳朵/耳朵
    在两个归档文件中进行检查,以检查其他外部库的绑定位置,然后检查它们是否在父级、war或ear模块中声明为依赖项

    编辑:
    好的,检查您创建的jar文件的内容。
    对MD5-2.7.1.jar运行以下命令
    jar-tvf MD5-2.7.1.jar

    这应该列出文件的内容,确保com/twmacinta/util/MD5.class列在jar的根目录中,并且jar中没有包含任何其他子目录,从而生成类条目,如build/com/twmacinta/util/MD5.class。

    另外,在查看了源代码之后,我注意到该库适合本机JNI或java实现,有多种方法可以使用各种系统属性禁用本机接口,否则您需要确保适当的本机lib在预期位置可用。

    是的,它在Nexus下,像其他jar一样,这方面没有问题,我想=)Oops,我的意思是com/twmacinta/util/MD5/2.7.1/MD5-2.7.1.jar层次结构“Nexus上就是这样”如果您的项目是Web项目,jar文件是否与应用程序(Web inf/lib)一起正确部署?我知道在以前的EclipseWTP版本中,有必要手动修改JavaEE依赖项,否则JAR将无法部署(另一种方法是使用mvn Eclipse:clean Eclipse:Eclipse来重新生成文件…)我在maven配置目标中添加了Eclipse:clean Eclipse:Eclipse,但这并没有解决问题=(但它以前工作得很好,我已经使用了来自同一存储库的“外部”jar wicket contrib javaee,因为MD5my最终归档文件是“ear”,在它下面我可以看到我所有库的“Maven依赖项”,包括“MD5-2.7.1”。我还有一个未版本化的文件夹“target/MyProject-ear-1.0-SNAPSHOT”,在那里我可以看到“Manifest.MF”还有我所有的罐子,再次包括“MD5-2.7.1”
    java.lang.ClassNotFoundException: com.twmacinta.util.MD5
         at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
         [...]