我正在尝试使用javacpp并在Eclipse(+ Mac OS)上遇到一些困难。

当我在命令行-中运行它时,它可以正常工作:

#include <string>

namespace LegacyLibrary {
    class LegacyClass {
        public:
            const std::string& getProperty() { return property; }
            void setProperty(const std::string& property) { this->property = property; }
        private:
            std::string property;
    };
}


import com.googlecode.javacpp.*;
import com.googlecode.javacpp.annotation.*;

@Platform(include="LegacyLibrary.h")
@Namespace("LegacyLibrary")
public class LegacyLibrary {
public static class LegacyClass extends Pointer {
    static { Loader.load(); }
    public LegacyClass() { allocate(); }
    private native void allocate();

    public native @ByRef String getProperty();
    public native void setProperty(String property);
}

public static void main(String[] args) {
    LegacyClass l = new LegacyClass();
    l.setProperty("Hello World!");
    System.out.println(l.getProperty());
}

}

this帖子中所建议

我得到的最终结果是:“hello world”。

现在,我将其纳入我的Eclipse IDE中,由于某种原因,出现此错误:
Exception in thread "main" java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: com.test.LegacyLibrary
    at com.googlecode.javacpp.Loader.load(Loader.java:293)
    at com.googlecode.javacpp.Loader.load(Loader.java:271)
    at com.test.LegacyLibrary$LegacyClass.<clinit>(LegacyLibrary.java:12)
    at com.test.LegacyLibrary.main(LegacyLibrary.java:23)
Caused by: java.lang.ClassNotFoundException: com.test.LegacyLibrary
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at com.googlecode.javacpp.Loader.load(Loader.java:291)
    ... 3 more

我将2个文件放入com.test包中,并将javacpp.jar放入类路径中。
我在这里想念什么吗?!?!错误消息表明类路径中的某些内容不正确(或丢失),但这是什么? (我也尝试将属性指向其他文件夹中的javacpp.jar,但出现相同的错误消息)。也许VM参数?!?!

谢谢!

最佳答案

您是否将javacpp.jar文件添加到项目库中?转到项目属性,然后转到“构建路径”信息,应该有一个用于库的选项卡。添加一个外部Jar文件,然后选择javacpp.jar文件。

10-06 03:38