質問: 私はeclipse上でjava言語を用いてソフトを作っています。(ちなみに教師あり学習をさせるプログラムです) そこでライブラリを使うためにライブラリの入った.jarファイルをプロジェクト上のlibフォルダにコピーしビルドパスの構成から参照ライブラリーに追加してそれをコード内でimportしてコードを書きました。ライブラリを使用してのコードにエラーはないことからimportはできていると思われます。 しかし実行してみると"java.lang.NoClassDefFoundError: libsvm/svm"とエラーが出てしまいます。 libsvmとは教師あり学習させる際に使用するライブラリ名です。 importできているのに「こんなクラスはないよ」とエラーが出てしまいます。 そこで、現在設定させているクラスパスを出力される System.out.println("classpath=" + System.getProperty("java.class.path")); を出力してみたところ、libsvm.jarがありませんでした。 しかし確かにlibsvm.jarは参照ライブラリに入っていてimportできています。 そこでlibsvm.jarのクラスパスを設定したい、 System.out.println("classpath=" + System.getProperty("java.class.path")); でlibsvm.jarの文字が出力されるようにしたいのですが、当方プログラミング初心者でその設定方法が分かりません。 ご存知の方がいたらクラスパスを設定する方法を教えてください。よろしくお願いします。 (libフォルダには他にも.jarファイルがありますがlibsvm.jarのみがエラーが出てしまいます。他のクラスパスは出力され、クラスを使用できる状態です。またlibsnm.jarは最新版を使用しています。)
回答: 最近NoClassDefFoundErrorの問題で躓きました。下記の対応で解決しました。参考になれば。。。 https://www.mlab.im.dendai.ac.jp/~yamada/java/ext/ このサイトを参考にJAVA_HOMEへ必要なJarをすべて配置すれば実行できるようになります 自分の場合はホームが C:\Program Files\Java\jdk1.8.0_201 なので C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext に配置しました。 ポイント 外部ライブラリ(*.jar)を置くべき場所は、 開発環境(JDK)の場合は jre/lib/ext、 実行環境(JRE)の場合は lib/ext です。