2

我正在尝试解决这个问题。

为解决问题而采取的步骤:

1):我已经下载了jDOM并去eclipse->构建路径->库并添加了jar文件。

2):去/jre7/lib/ext并添加jdom-2.0.5.jar(这是最新版本)

3): 将 jar 文件添加到类路径。

这是错误:

start initialization...
log4j:WARN No appenders could be found for logger (gate.Gate).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.lang.NoClassDefFoundError: org/jdom/JDOMException
    at gate.Gate.init(Gate.java:216)
    at yelpMongo.YelpGate.<init>(YelpGate.java:44)
    at yelpMongo.YelpGate.getInstance(YelpGate.java:71)
    at yelpMongo.YelpGate.main(YelpGate.java:115)
Caused by: java.lang.ClassNotFoundException: org.jdom.JDOMException
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)

Java 代码:

import gate.Gate;
import gate.Corpus;
import gate.Factory;
import static gate.util.persistence.PersistenceManager.loadObjectFromFile;

public class YelpGate {

    // remember create log4j.properties file under project dir!!!
    String homeDir = "C:/Program Files/GATE_Developer_7.1/";
    String ruleDir = "C:/Users/Rupesh/workspace/YelpMongo/Yelp/yelp.xgapp";

    // used for corpus control
    private static gate.CorpusController ctrl;

    // singleton
    private static YelpGate instance = null;

    /*
     * constructor of YelpGate, load Gate Plugins when initializaion
     */
    private YelpGate()
    {
        System.out.println("start initialization...");
        try {
            if (Gate.getGateHome() == null)
            {
                Gate.setGateHome(new File(homeDir));
            }

            Gate.init();
            Gate.getCreoleRegister().registerDirectories(
                    new File(homeDir + "plugins", "ANNIE").toURI().toURL());

            //For Only if you are using this plugin
            Gate.getCreoleRegister().registerDirectories(
                    new File(homeDir + "plugins", "Tools").toURI().toURL());

            ctrl = ((gate.CorpusController)
                    loadObjectFromFile(new java.io.File(ruleDir)));

        } catch (Exception e){
            System.out.println(e.getMessage());
        }
    } 

请帮助我在哪里做错了。我只是想解决这个问题。

问候。

4

1 回答 1

1

JDOM 2.x 更改了 JDOM 方法和类的 API 以包含通用结构,这使得它对 Java 更加友好并保持最新。

所需的更改包括对系统 API 的更改。这打破了 JDOM 1.x 版本和 JDOM 2.x 版本之间的兼容性。

为了在更大的系统中拥有不同的库依赖关系,JDOM 2.x 版本被更改为具有不同的包名称。

JDOM 1.x 类都在包结构中org.jdom.*,所有 JDOM 2.x 类都在包中org.jdom2.*

你的例外是:java.lang.NoClassDefFoundError: org/jdom/JDOMException

这意味着您的类路径中需要有 JDOM 1.x 版本。您需要下载 JDOM 1.1.3

或者,您需要找到您的 JDOM 依赖项并升级该代码以使用 JDOM 2.x。这不是很难

您应该从 Java 的 ext 目录中删除 JDOM 2.0.5 jar。那不是放置依赖 jar 的正确位置。

于 2014-03-20T10:11:16.620 回答