質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

2055閲覧

NetBeans上では動くプログラムをjarファイルから開くとエラーになる

jiyi

総合スコア7

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/06/29 14:59

前提・実現したいこと

NetBeansで作成したアプリケーションを、jarファイルから開いて使いたいです。
openCSVというライブラリを使っています。
エラー等の詳細は以下になりますが、これを解消するにはどうすればよいでしょうか?

発生している問題・エラーメッセージ

NetBeans上でRun Projectをすると正常に動作し、CSV読み込みなどができるのですが、jarファイルを開く(ubuntuなのでターミナルでjava -jar ~~.jarとしています)と、CSV読み込み時にエラーが出てしまいます。
エラーメッセージは以下のようになっています。

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/opencsv/CSVReader

ソースコード

エラーが出ている箇所は以下になります。

CSVReader csvReader = new CSVReader( new FileReader(path) );

import com.opencsv.CSVReaderはしていますし、そもそもNetBeans上で動かしたときはうまく行っているのが謎に感じます。

試したこと

クラスパスが通ってないのかなと思い確認してみましたが以下のようになっており、正しそうでした(NetBeans上では動くので当然?)。
スクリーンショット
上記のようにlog4jなどのパスには'/'ではなく''が使われていたので''に変えてみたりもしましたがだめでした。

補足情報(FW/ツールのバージョンなど)

log4jなどの他のライブラリはopenCSV導入前から使っていましたが、そのときはエラー等は特になく正常に使えていました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A-pZ

2020/06/29 23:14 編集

実行するjarファイルの作成手順も記載してください。
jiyi

2020/06/30 06:35

作成時にはnetbeansのRunタブのClean and Build Projectを押しています
guest

回答2

0

ベストアンサー

作成されているプロジェクトの様式にも依存するかも知れませんが、以下を確認してください。

※プロジェクト内にMANIFEST.MFがある場合はそれが優先されます※

もしMANIFEST.MFがない場合(特に変わった理由がなければ、基本はこれが良い)NetBeansから自動的に生成できます。
プロジェクトのプロパティを選択し、
build > packaging にて、ビルドした成果物の設定を開きます。

イメージ説明

このとき「Copy Dependent Libraries」にチェックが入っていれば、ビルド(clean and buildでも同様です)した際に、プロジェクト内の dist ディレクトリに 成果物のjarファイルとともに、ビルドパスに指定したあらゆる種類のライブラリが dist/lib ディレクトリに格納されます。

dist/libに配置されたjarファイルへの依存関係を示すMANIFEST.MFは自動生成され、プロジェクトにてクラスパスに指定したjarファイルが格納され、実行可能になるはずです。

投稿2020/07/01 13:33

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jiyi

2020/07/02 04:53

マニフェストファイルがあったのでそれを書き換えたらできましたが、そんな方法があったのですね…。 この方法の方が確実そうなので、次回試してみようと思います。 ありがとうございました!
guest

0

  1. jar ファイルに含まれるマニフェストにクラスパスを指定する
  2. 実行時に手動でクラスパスを指定する

ほかにもあるけど普通はここまで

投稿2020/06/29 22:09

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jiyi

2020/06/30 06:34

マニフェストファイルを確認したところ、Class-Pathというところに `. lib/log4j-1.2.15-jar` しかなかったので、これが関係しているということは分かりました。 どのようにすれば直せるでしょうか。 javaについてもnetbeansについても理解が浅く、初歩的な質問になってしまっているかもしれませんが、よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2020/06/30 06:36

試したことにある画像のクラスパスは基本全部通さないと動かない
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問