在旧的基于蚂蚁的网络应用程序中找不到类异常

问题描述 投票:0回答:1

我正在尝试让基于 ANT 的旧应用程序在 Tomcat 上运行。当我在 Eclipse 中运行它时,出现以下错误:

Caused by: java.lang.NoClassDefFoundError: org/eclipse/birt/core/exception/BirtException
    at java.base/java.lang.Class.getDeclaredFields0(Native Method)
    at java.base/java.lang.Class.privateGetDeclaredFields(Class.java:3297)
    at java.base/java.lang.Class.getDeclaredFields(Class.java:2371)
    at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:110)
    at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:269)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationListenerAnnotations(WebAnnotationSet.java:89)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:67)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:329)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:783)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:300)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:114)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4804)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
    ... 6 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.birt.core.exception.BirtException
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:592)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    ... 19 more

BirtException 类在构建路径上的 coreapi.jar 文件中定义。 build.xml 文件中也提到了这一点:

<path id="MDS 3.0 Single Code.classpath">
        <path refid="JSF 2 Libraries.userclasspath"/>
        <path refid="Oracle Libraries.userclasspath"/>
        <path refid="Tomahawk Libraries.userclasspath"/>
        <path refid="tomahawk.userclasspath"/>
        <path refid="Oracle.userclasspath"/>
        <path refid="JSF Libraries.userclasspath"/>
        <path refid="EclipseLink.userclasspath"/>
        <path refid="Tomcat.userclasspath"/>
        <pathelement location="${ECLIPSE_HOME}configuration/org.eclipse.osgi/105/0/.cp/data/2.5.2/engineapi.jar"/>
<pathelement location="Libraries/eclipse_config_libs/coreapi.jar"/>

所以,它似乎应该在运行时可用。我在这里缺少什么? 我正在使用 tomcat 8.5 和 eclipse 4.29

java ant tomcat8
1个回答
0
投票

您是否尝试将 Libraries/eclipse_config_libs/coreapi.jar 更改为服务器上的完整路径? java CLASSPATH 上的完整路径吗?你能发布 ant 构建脚本吗?您可以使用以下


URLClassLoader urlClassLoader = URLClassLoader.newInstance(new URL[] {
       new URL(
           "whatever the path of the jar is"
       )
});

Class clazz = urlClassLoader.loadClass("BirtException");

System.out.println(null == clazz); // or call a getter/setter on it.

此外,在 Eclipse 中,您还需要确保该库实际上包含在项目级别和服务器上的 .ear 中。 和BIRT NoClassDefFoundError

© www.soinside.com 2019 - 2024. All rights reserved.