OSGiでJavaプロジェクトを移植しようとしています。このプロジェクトは、サードパーティのJAR(librealsense JavaCPP presets)によって異なります。私は開発のためにEclipseを使用しています。OSGi APIバージョンミスマッチ例外の問題
私は必要なもののサブセットを使用して構成をテストし、悲惨に失敗しました。 私がテストに使用したコードは以下の通りです:
package testinglibrariesplugin;
import org.bytedeco.javacpp.RealSense.*;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
public void start(BundleContext context) throws Exception {
System.out.println("Hello World!!");
try {
context context1 = new context();
device device = context1.get_device(0);
String devName = device.get_name().getString();
System.out.println(devName);
} catch(Exception e) {
System.out.println(e);
}
}
public void stop(BundleContext context) throws Exception {
System.out.println("Goodbye World!!");
}
}
でManifest.mf:
...
Bundle-ClassPath: src/bundletesting/ffmpeg-linux-x86_64.jar,
src/bundletesting/ffmpeg-linux-x86.jar,
src/bundletesting/ffmpeg-platform.jar,
src/bundletesting/ffmpeg.jar,
src/bundletesting/javacpp.jar,
src/bundletesting/javacv.jar,
src/bundletesting/librealsense-linux-x86_64.jar,
src/bundletesting/librealsense-linux-x86.jar,
src/bundletesting/librealsense-platform.jar,
src/bundletesting/librealsense.jar,
src/bundletesting/opencv-linux-x86_64.jar,
src/bundletesting/opencv-linux-x86.jar,
src/bundletesting/opencv-platform.jar,
src/bundletesting/opencv.jar,
.
build.properties:
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
src/bundletesting/ffmpeg-linux-x86_64.jar,\
src/bundletesting/ffmpeg-linux-x86.jar,\
src/bundletesting/ffmpeg-platform.jar,\
src/bundletesting/ffmpeg.jar,\
src/bundletesting/javacpp.jar,\
src/bundletesting/javacv.jar,\
src/bundletesting/librealsense-linux-x86_64.jar,\
src/bundletesting/librealsense-linux-x86.jar,\
src/bundletesting/librealsense-platform.jar,\
src/bundletesting/librealsense.jar,\
src/bundletesting/opencv-linux-x86_64.jar,\
src/bundletesting/opencv-linux-x86.jar,\
src/bundletesting/opencv-platform.jar,\
src/bundletesting/opencv.jar
私がしている使用してきたjarファイルダウンロード可能なfrom my Github repo。
私は次のエラーを取得する:
Hello World!!
java.lang.RuntimeException: API version mismatch: librealsense.so was compiled with API version 1.12.1 but the application was compiled with 1.9.6! Make sure correct version of the library is installed (make install)
コードはJavaだけを使用して動作するので、私は、Eclipse/OSGiの中の設定に問題があると仮定しなければなりません。私はこのAPIの不一致を無視したいと思いますが、私はこの環境で実際に経験していないので、進める方法がわかりません。これが問題を解決する正しい方法でない場合は教えてください。
何か助けていただければ幸いです。
EDIT:これは私が単純なJavaアプリケーションで使用したコードであり、それは動作します:
import org.bytedeco.javacpp.RealSense.*;
public class Main {
public static void main(String[] args) {
context context = new context();
device device = context.get_device(0);
String devName = device.get_name().getString();
System.out.println(devName);
}
}
出力:Intel RealSense SR300
予想通り。
EDIT 2:私は、エラーがこのlibに文句を言っている
この問題はOSGiに関連していますか?プレーンなJavaアプリケーションの単純なメインメソッドからコードを実行するとどうなりますか? –
私は試して、それは完璧に動作します... – mattdibi
両方の場合に同じapiの依存関係を使いましたか? –