2

创建了一个 Java 应用程序以通过 CIS(内容集成套件)将文档上传到存储应用程序。该应用程序在 RAD 中成功运行,但在 unix 环境中作为可执行 jar 得到 NoClassDefFoundError。我在本地机器上找不到该课程,并且互联网上没有对该课程的引用。

清单包含所需 jar 文件和主类的类路径。

任何人都可以帮忙吗?

Fri Sep 04 16:47:25 EDT 2009 : StandardBatchApplication startup() completed.
java.lang.NoClassDefFoundError: com.stellent.cis.support.spring.ResourceHelper
        at com.stellent.cis.common.classloader.IsolatedJarClassLoader$TemporaryF
        at com.stellent.cis.common.classloader.IsolatedJarClassLoader$TemporaryF
        at com.stellent.cis.common.classloader.IsolatedJarClassLoader$TemporaryF
        at com.stellent.cis.common.classloader.IsolatedJarClassLoader.<clinit>(I
        at java.lang.J9VMInternals.initializeImpl(Native Method)
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:196)
        at com.stellent.cis.impl.CISApplicationFactory.getCisClassloader(CISAppl
        at com.stellent.cis.impl.CISApplicationFactory.getCisApplication(CISAppl
        at com.stellent.cis.impl.CISApplicationFactory.initialize(CISApplication
        at com.lowes.ipt.edi.processor.CISApp.initialize(CISApp.java:48)
        at com.lowes.ipt.edi.processor.EDItoEDAMUploadProcessor.main(EDItoEDAMUp
Caused by: java.lang.ClassNotFoundException: com.stellent.cis.support.spring.Res
        at java.net.URLClassLoader.findClass(URLClassLoader.java:496)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:631)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
        ... 11 more

更新:我只有一个处理 CIS 的 jar 文件。我在罐子里看了看,里面没有类。我不熟悉任何其他具有 CIS 类的 RAD 默认类。这不仅发生在这个类上,也发生在 webservices.jar 中包含的类上。我可以看到该类,它是我的类路径的一部分,因为当我从路径中删除 Jar 时,它会抱怨另一个缺少的类。当我将它放回我的路径时,它会在程序中走得更远并给出相同的错误。

4

2 回答 2

0

丢失的类可能位于本地机器上安装的某个 JAR 文件中,而不是远程机器上。或者更有可能 - 它安装在与本地机器不同的位置的删除机器中(如果远程机器是 Unix 机器而你的本地机器是 Windows 机器,这是预期的)。

在您构建的 JAR 中的 MANIFEST.MF 文件中设置的类路径必须指定类路径,以便在远程机器上查找所有相关 JAR - 您必须找到该 JAR 的安装位置,然后将该路径添加到清单类路径。Unix 机器中的 JAR 通常安装在 /usr/share/java 中,但我不能告诉你更多,因为我不熟悉 CIS 并且我不知道它通常分发哪些 JAR 文件。

于 2009-09-04T22:52:48.663 回答
0

该问题是由 UNIX 中 tmp 目录的权限引起的。CIS API 使用 tmp 目录来创建和存储执行所需的文件/类。因为我是在我自己的 ID 下运行该进程,所以它无法访问由 wsadmin 创建的 tmp 文件。要解决此问题,必须以 wsadmin 身份运行该进程。

于 2009-09-21T13:39:02.333 回答