【问题标题】:Rational Application Developer (RAD) 7.5+ and websphere runtime will not pick up jars from projectsRational Application Developer (RAD) 7.5+ 和 websphere 运行时不会从项目中获取 jars
【发布时间】:2010-03-02 16:27:59
【问题描述】:

使用 RAD 版本:7.5.3、Java 1.5。

我有几个不同的项目。我需要分解 java 代码并将 *.class 文件转换为 jar。所以基本上,相同的 *.class 文件我只是删除了代码,然后将类文件放入 jar 中。

我将这些类分解成一个 jar,然后将该 jar 包含在项目中。而且我还对 jar 进行了订单/导出,以便其他项目可以看到 jar。

此时,理想情况下我的项目不应该更改,因为我使用的是 jar 中的类文件而不是 java 代码。

当我在 websphere 中访问我的 Web 应用程序时,我在 jar 中的类上遇到类未找到错误。

项目结构:

A. Project earApp  -- will need the webapp
B. Project webapp  -- will need the project (no jar files or *.java files are found in this project)
C. Project javasrc -- the java source and the NEW JAR file are found here.

我认为 websphere 不承认 jar。

这是错误:

java.lang.NoClassDefFoundError: com.MyApp
 at java.lang.ClassLoader.defineClassImpl(Native Method)
 at java.lang.ClassLoader.defineClass(ClassLoader.java:258)
 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
 at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:675)
 at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:614)
 at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:431)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
 at java.lang.Class.getDeclaredMethodsImpl(Native Method)
 at java.lang.Class.getDeclaredMethods(Class.java:664)
 at com.ibm.ws.webcontainer.annotation.data.ScannedAnnotationData.collectMethodAnnotations(ScannedAnnotationData.java:130)
 at com.ibm.ws.webcontainer.annotation.data.ScannedAnnotationData.<init>(ScannedAnnotationData.java:47)
 at com.ibm.ws.webcontainer.annotation.AnnotationScanner.scanClass(AnnotationScanner.java:61)
 at com.ibm.ws.wswebcontainer.webapp.WebApp.processRuntimeAnnotationHelpers(WebApp.java:711)
 at com.ibm.ws.wswebcontainer.webapp.WebApp.populateJavaNameSpace(WebApp.java:624)
 at com.ibm.ws.wswebcontainer.webapp.WebApp.initialize(WebApp.java:289)
 at com.ibm.ws.wswebcontainer.webapp.WebGroup.addWebApplication(WebGroup.java:93)
 at com.ibm.ws.wswebcontainer.VirtualHost.addWebApplication(VirtualHost.java:162)
 at com.ibm.ws.wswebcontainer.WebContainer.addWebApp(WebContainer.java:671)
 at com.ibm.ws.wswebcontainer.WebContainer.addWebApplication(WebContainer.java:624)
 at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:395)
 at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:611)
 at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1274)
 at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1165)
 at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:587)
 at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:832)
 at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:921)
 at com.ibm.ws.runtime.component.ApplicationMgrImpl$AppInitializer.run(ApplicationMgrImpl.java:2124)
 at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:342)
 at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)

你认为我需要做什么?

【问题讨论】:

    标签: java ide websphere rad


    【解决方案1】:

    我们在升级到 WAS 7.0 时遇到了同样的问题

    显然,WAS 7.0 改变了它查找其依赖项的方式,您需要确保您创建的 JAR 文件也在使用它们的清单文件中提及。

    因此,如果您在 EJB 和 Web 项目中都使用它,则需要更新这两个清单文件以引用 JAR。

    【讨论】:

    • 您提到的 Web 项目中的清单到底是什么。我认为这不是 web.xml 文件,对吧?
    【解决方案2】:

    您是否在项目属性对话框中将 jar 添加到 Java EE 模块依赖项? jar 是否在包资源管理器中的 EAR 或 Web Libraries 节点下列出?

    【讨论】:

    • 我还是想不通。我将 jar 添加到 webapp 的 Java EE 模块依赖项中。我没有更改 EAR 的任何配置。但是为什么必须在 EAR 或 Webapp 级别配置项目中的 jar。它是我的源项目的一部分,我正在导出它?临时,我只是将jar复制到webapp下的WEB-INF/lib目录下。这适用于 websphere 运行时。但这不是我真正想要的。
    • 你最初是做什么的?从eclipse中创建一个带有'export to jar'的jar,然后你是否将该文件放在javasrc项目中的某个位置并将其添加到web项目的java构建路径中?如果是这种情况,那么您仍然需要向 Eclipse 表明,当您运行/构建 WAR/EAR 时,应该将此 jar 复制到 WEB-INF/lib。更好的选择是配置构建路径以将 javasrc 项目作为依赖项包含在内,然后在 java ee deps 中勾选该项目的复选框。这个
    【解决方案3】:

    在将 jar 复制到 WebContent/WEB-INF/lib 之前,我遇到了同样的问题。你可以试试这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-07
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      相关资源
      最近更新 更多