요즘 프로젝트에서 JAVA를 많이 쓰고 있다.
규격서에 JAVA를 명시해두었기에 우리 팀 프로젝트중에서 유일하게 JAVA를 쓰는 프로젝트를 하고 있기 때문이다.
학부 때 이후로 JAVA를 쓴 적이 없으니 5년은 안쓴 것 같다.
원래 자바를 메인으로 하던 사람이 아니라 좀만 복잡한게 나오면 골머리를 앓고 있다.
특히 가장 문제가 되었던게 이 JNI.
임베디드 특성상 하드웨어 제어를 자주 해야한다.
간단한 Serial 통신이면 exec로 하면 되는데, 문제는 다른 C/C++ 라이브러리를 가져와야 할 때이다.
처음에는 JNA를 쓰려고 했는데, JNA는 C++은 못쓴다고 해서, 또 JNI 함수까지 규격서에 정의가 되어 있어서 어쩔수없이 JNI로 갈아타게 되었다.
Header 만들고, C작성하고, so파일 만드는것까진 잘 되었다.
이걸 loadLibrary로 불러오려고 했더니 계속 오류가 난다.
검색해보면 Linux에서는 LD_LIBRARY_PATH가 java.library.path로 나타난다고 한다. 실패.
-Djava.library.path로 property 설정을 해주면 된다고 한다. 실패.
더 찾아보다보니 loadLibrary 말고 load를 쓰고, 전체 경로를 입력하라고 하는 글이 보였다.
이걸로 하니 드디어 성공하였다.
이게 ARM Embedded Linux문제인건지, 원래 Linux OS 문제인건지 모르겠다.
'단편글' 카테고리의 다른 글
URI에서 IPv6 사용 (0) | 2020.10.15 |
---|---|
struct tm 을 쓸 때 하는 실수들 (0) | 2020.08.21 |
DP 문제. 어렵다 (0) | 2020.07.13 |
모든 조합을 구하는 문제 (순열) (0) | 2020.07.07 |
priority queue와 vector의 최소값 (0) | 2020.07.02 |