下記の画像はプロジェクトファイルです。lib/の中にopencv.jarファイルがあるのですがそのクラスパスを指定するにはどうすればいいのでしょうか?shellファイルに指定しているのですが下記のエラーが出ます。マニュフェストファイルにもクラスパスを設定して.shellファイルの実行時に文字-cpオプションを付けてファイルを指定しましたが同じエラーが出ます。java -Djava.library.path=lib -jar Conveter.jar
コマンドを実行しましたが同じエラーが出ます。マニュフェストファイルがおかしいという指摘をもらっったのですがどこがおかしいのでしょうか?
わかっていること
javac で2つの.soと.jarファイルを指定しているのですがなぜかクラスがありませんと表示されます。
試したことコマンド
参考サイト:https://www.sejuku.net/blog/62990
参考サイト:https://docs.oracle.com/javase/jp/8/docs/technotes/tools/windows/javac.html
参考サイト:https://software.fujitsu.com/jp/manual/manualfiles/m150014/b1x10181/06z200/b0181-03-11-01-00.html
Exception in thread "main" java.lang.NoClassDefFoundError: org/opencv/core/CvType at Main.main(Main.java:15) Caused by: java.lang.ClassNotFoundException: org.opencv.core.CvType at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 1 more
Main.javaのの
java
import java.io.File; import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; public class Main { public static void main(String[] args) { // OpenCVが使えるためのおまじない // 環境によってcan't load libraryのエラーが出る可能性がある // <解決策> // lib_pathに"opencv_java450.dll"を入れたフォルダの // 絶対パスを調べて、lib_folder.getAbsolutePath()の代わりに書きます // 例: String lib_path = "C:\\Users\\username\\workspace\\lib"; Mat mat = Mat.eye(3,3,CvType.CV_8UC1); // 作った行列の中身を確認します。 System.out.println("mat = " + mat.dump()); } }
run.sh
shell
#!/bin/bash clear javac -verbose -cp lib/opencv-455.jar:lib/libopencv_java455.so src/*.java -d bin # コンパイル if [ $? = "0" ] ; then jar cvfm PDFConverter.jar manifest.mf -C bin ./ # .jarファイル生成 clear java -Djava.library.path=lib -jar Conveter.jar else echo echo echo " Compile Error" echo echo fi
manifest.mf
Main-Class: Main Class-Path: lib/opencv-455.jar
まだ回答がついていません
会員登録して回答してみよう