2014-02-28 4 views
2

우리는 beagle bone black (우분투 실행)에서 실행 가능한 runnable java jar 파일을 생성합니다.만족하지 못하는 링크 오류 runnable jar 참조하는 jssc 라이브러리

우리는 Mac과 PC (윈도우)에서는 잘 돌아가지만 우분투 시스템에서는 실행되지 않는 실행 가능한 jar 파일을 만들었습니다. 실행 중 다음 오류가 계속 발생합니다.

Exception in thread "main" java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) 
    Caused by: java.lang.UnsatisfiedLinkError: /home/ubuntu/.jssc/linux/libjSSC-2.6_armhf.so: /home/ubuntu/.jssc/linux/libjSSC-2.6_armhf.so: cannot open shared object file: No such file or directory 
     at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
     at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965) 
     at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890) 
     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1851) 
     at java.lang.Runtime.load0(Runtime.java:795) 
     at java.lang.System.load(System.java:1062) 
     at jssc.SerialNativeInterface.<clinit>(SerialNativeInterface.java:172) 
     at jssc.SerialPort.<init>(SerialPort.java:118) 
     at InputBoard.<init>(InputBoard.java:33) 
     at InputBoard.main(InputBoard.java:22) 
     ... 5 more 

모든 정보를 제공해 주시면 감사하겠습니다. 말했듯이이 유닉스 기반의 Mac에서 터미널을 통해 잘 실행되므로 우분투에서 작동해야합니다. 왜 우리가/home/ubuntu 디렉토리를 참조하는지 알 수 없습니다. 프로젝트에 대한 코드 정보가 필요하다면 알려주십시오. 관련이 있다고 생각하지 않습니다.

+0

비글 뼈에서 다른 Java 앱을 실행 한 적이 있습니까? 앱의 일부 또는 자바 JVM이 jssc 라이브러리를로드하려고합니다. 아마도 해결 방법은 [install jssc] (http://code.google.com/p/java-simple-serial-connector/wiki/jSSC_Start_Working)이고이 오류를 지나치는지 확인하십시오 (Linux가 그들은이 우분투 버전과 호환됩니다). –

+0

감사합니다 @ 샘, 우리는 비글 뼈에 아무런 문제가 다른 자바 응용 프로그램을 실행했습니다. Java 용 직렬 포트 라이브러리의 대부분은 Windows 용 dll과 같은 기본 플러그인을 필요로합니다. Eclipse 프로젝트의 네이티브 라이브러리에이 라이브러리를 저장하고 jar 파일을 내 보냈지 만 java.system.path에 대한 만족할만한 링크 오류가 발생했습니다. –

+0

쉘 (명령 줄)에서 실행하는 것에 대해 이야기하는 경우 _LD_LIBRARY_PATH_ 예 :'export LD_LIBRARY_PATH =/directory_where_so_file_is'를 설정했는지 확인하십시오. 또한 자바는'java.library.path'라는 시스템 프로퍼티를 가지고 있는데,'-Djava.library.path = ...'를 사용해서 설정할 수도 있습니다. 이것 [SO 포스트]를보십시오 (http://stackoverflow.com/questions/661320/how-to-add-native-library-to-java-library-path-with-eclipse-launch-instead-of) 그것을보십시오 Eclipse 내부에서 실행중인 경우. 오류에 표시된'.so' 파일에는 특정 버전이 있으므로 파일의 버전이 올바른지 확인하십시오. HTH. –

답변

0

Arm 용 하드 플로트 용 최신 JDK 8을 설치했을 때이 문제가 해결되었습니다. 이전에 여러 가지 시도를했는데 버전 2.6, 2.7 및 2.8을 사용하여 LD_LIBRARY_PATH env를 지정했습니다. 변수는 ~/.jssc/linux에 라이브러리가 있는지 등을 확인하고, Java를 업그레이드 한 후에 만 ​​완벽하게 작동했습니다.

+0

금연 총은 소프트 플로트 JDK를 사용하고 있었고 하드 플로트 JDK가 필요했습니다. –

0

네이티브 런타임 라이브러리가 누락되었습니다. apt-get을 사용하여 패키지를 가져 와서이 라이브러리를 설치할 수 있습니다. 이렇게하려면이 명령을 내리십시오.

sudo apt-get install libc6-* 
0

최신 버전에도 동일한 오류가 발생했습니다. 필자의 경우 JSSC는 .jar 파일에서 복사 한 "소프트 플로트"버전의 기본 라이브러리를 사용하려고 시도했다. 나는 .jar 파일의 하드 플로트 버전으로 파일을 대체하고 파일에 대한 쓰기 액세스를 제거했다. 그 후 모든 작업이 시작되었습니다.