如何在java中动态运行时将.class文件从一个项目(项目2)加载到另一个web项目(项目3)?

如何在java中动态运行时将.class文件从一个项目(项目2)加载到另一个web项目(项目3)?,java,Java,我有三个Java项目 Project1用于创建库并生成一个jar文件 Project2将基于Project1生成的jar执行 Project3是web applicationServlets和JSP,Project3也使用Project1生成的jar文件,我需要在动态运行时在Project3中加载Project2的.class文件 Project3还需要使用Project1生成的jar文件 我在Tomcat和JBOSS服务器上运行这些应用程序,当我进入浏览器并运行这些应用程序时,我得到的是网页,

我有三个Java项目

Project1用于创建库并生成一个jar文件

Project2将基于Project1生成的jar执行

Project3是web applicationServlets和JSP,Project3也使用Project1生成的jar文件,我需要在动态运行时在Project3中加载Project2的.class文件

Project3还需要使用Project1生成的jar文件

我在Tomcat和JBOSS服务器上运行这些应用程序,当我进入浏览器并运行这些应用程序时,我得到的是网页,但我没有得到数据。它是说ClassNotFoundException,意味着我无法在运行时动态加载类


请帮助我,我可以避免这个问题。

在Tomcat中,您可以部署web应用程序,而不是将其部署为war文件。展开它并添加缺少的类。如果缺少的类是Project1创建的jar,那么假设您使用的是maven,您就会知道缺少了一个依赖项。如果缺少的类来自Project2,那么您知道您缺少一个库,假设Project2中的所有类都是预定义的


如果这没有帮助,那么修改您的帖子并添加您部署到Tomcat的类,以及找不到该类的完整消息。

将您处理的所有jar文件放在Tomcat部署文件夹的WEB-INF/lib中
它们将被您的代码使用。

我所做的事情与您在我的项目中所做的非常相似。我有一个库,它定义了一个API—一个Eclipse项目,由另一个库使用—该API的实现,一个单独的Eclipse项目和一个WAR文件—API的使用者,还有—你猜到了—第三个Eclipse项目

我通过使用Mavenized构建系统来实现这一点。如果您以前没有使用过Maven,那么就构建功能而言,这是一个重大进步。为了使一切正常工作,我只在实现的项目对象模型文件中声明API模块是实现的依赖项,在WAR的项目对象模型文件中声明API和实现模块都是WAR的依赖项。Maven然后为我构建所有东西,将API和实现的JAR放在WAR的WEB-INF/lib目录中

因为使用Maven是一个巨大的步骤,您最好自己将相关的JAR文件放到WEB-INF/lib中。也许您需要更清楚地告诉IDE依赖关系,以便它可以为您将文件放在那里?或者您可以手动将它们放在那里。

使用Maven和Artifact进行构建管理。它将处理所有这些依赖关系。
从its中引用它。

可以使用自定义类加载器执行其他加载方式。不要那样做!这很混乱,很难调试。感谢您的回复。我已经将所有jar文件放在WEB-INF/lib中,但问题是相同的。如果您的所有类都在jar文件中,并且WEB-INF/lib中可能有一个classes文件夹,请将其删除。它可能包含一些与jar文件中的其他包类似的包名,但如果缺少类,则可能会产生问题。