线程“main”中的异常java.lang.UnsatisfiedLinkError:java.library.path中没有ntcore?

时间:2017-02-13 02:51:17

标签: java eclipse

我试图在gazebosim中运行一些基本代码,项目构建正常但是一旦连接到gazebo我得到错误“线程中的异常”主“java.lang.UnsatisfiedLinkError:java.library.path中没有ntcore”

我找到了文件ntcore.so并用-Djava'library.path

分隔了它的位置
target name="simulate" depends="jar-for-simulation">
<sequential>
  <echo>[simulate] You may now run Gazebo and your DriverStation</echo>
    <echo>[simulate] Running Code.</echo>
    <java jar="${simulation.dist.jar}" fork="true">
      <jvmarg value="-Djava.library.path={/home/alex/wpilib/java/current/lib/native/lib/libntcore.so}" />
  </java>
</sequential>

有什么想法吗?这让我发疯了

控制台的输出:

Buildfile: /home/alex/workspace/TestRobo/build.xml
Trying to override old definition of task classloader
compile:
 [echo] [athena-compile] Compiling src with classpath=/home/alex/wpilib/java/current/lib/WPILib.jar:/home/alex/wpilib/java/current/lib/NetworkTables.jar:/home/alex/wpilib/java/current/lib/opencv.jar:/home/alex/wpilib/java/current/lib/cscore.jar to build
jar-for-simulation:
 [echo] [jar-for-simulation] Building jar.
  [jar] Building jar: /home/alex/workspace/TestRobo/dist/FRCUserProgramSim.jar
simulate:
 [echo] [simulate] You may now run Gazebo and your DriverStation
 [echo] [simulate] Running Code.
 [java] Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
 [java] resources = |sun.misc.CompoundEnumeration@f0a63f|
 [java] platform: /Linux/i386/
 [java] Exception in thread "main" java.lang.UnsatisfiedLinkError: no ntcore in java.library.path
 [java]     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1865)
 [java]     at java.lang.Runtime.loadLibrary0(Runtime.java:870)
 [java]     at java.lang.System.loadLibrary(System.java:1122)
 [java]     at edu.wpi.first.wpilibj.networktables.NetworkTablesJNI.<clinit>(NetworkTablesJNI.java:60)
 [java]     at edu.wpi.first.wpilibj.networktables.NetworkTable.initialize(NetworkTable.java:44)
 [java]     at edu.wpi.first.wpilibj.networktables.NetworkTable.getTable(NetworkTable.java:176)
 [java]     at edu.wpi.first.wpilibj.RobotBase.<init>(RobotBase.java:58)
 [java]     at edu.wpi.first.wpilibj.SampleRobot.<init>(SampleRobot.java:31)
 [java]     at org.usfirst.frc.team420.robot.Robot.<init>(Robot.java:29)
 [java]     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 [java]     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 [java]     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 [java]     at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
 [java]     at java.lang.Class.newInstance(Class.java:442)
 [java]     at edu.wpi.first.wpilibj.RobotBase.main(RobotBase.java:190)

4 个答案:

答案 0 :(得分:0)

尝试将java.library.path设置为库所在的目录,而不是库本身。

<jvmarg value="-Djava.library.path=/home/alex/wpilib/java/current/lib/native/lib" />

(我不确定{}是否需要或有问题?)

答案 1 :(得分:0)

错误的原因可能如下:

<强>原因:

PATH 变量不包含包含Java类运行所需的本机库的目录。

解决方法:

在Windows或/和Unix平台上,将依赖项添加到PATH变量。关注this文章以获取更多信息

OR

您可以在ECLIPSE启动配置中添加-Djava.library.path作为VM参数

答案 2 :(得分:0)

不久前我遇到了这个问题。我解决这个问题的方法是使用ntcore

从源代码编译Gradle.

有关如何执行此操作的说明包含在ntcore的自述文件中。

答案 3 :(得分:0)

就我而言,我只是在标题和方法中混合了名称:

JNIEXPORT jint JNICALL Java_com_example_JINICall_doMultiply (JNIEnv *, jobject, jint, int);JNIEXPORT jint JNICALL Java_com_example_JNICall_doMultiply ( JNIEnv * jenv, jobject jobj, jint val1, jint val){ return val1 * val2;}