[解決済み] スレッド "main" での例外 java.lang.IllegalArgumentException: in は null であってはなりません。
2022-02-10 08:48:47
質問
OpenNLPライブラリのsentencedetectorを使おうとして、以下のコードを書いたのですが、このアドレスに関連する例外が発生しました。 ja-sent.bin というファイルがありますが、このファイルのアドレスがわかりません。
import java.io.*;
import java.net.URL;
import opennlp.tools.sentdetect.SentenceDetectorME;
import opennlp.tools.sentdetect.SentenceModel;
public class SentenceDetect
{
private SentenceDetectorME sentenceDetector;
public void init()
{
/** Load and initialize the sentence detection model */
InputStream modelIn = null;
SentenceModel model = null;
try {
modelIn = SentenceDetect.class.getClassLoader().getResourceAsStream("Tokenizer/models/en-sent.bin");
model = new SentenceModel(modelIn); //*<- line 36*
}
catch (IOException e)
{
e.printStackTrace();
}
finally {
if (modelIn != null) {
try {
modelIn.close();
}
catch (IOException e) {}
}
}
sentenceDetector = new SentenceDetectorME(model);
}
public String[] getSentences(String longSentence)
{
return sentenceDetector.sentDetect(longSentence);
}
}
Mainクラスです。
public static void main(String[] args)
{
SentenceDetect d = new SentenceDetect();
d.init(); ///*<- line 10*
String[] s = d.getSentences("This is sentence #1. This is Sentence #2");
System.out.println( s[0] ); // Should be the first sentence
System.out.println( s[1] ); // Should be the second sentence
}
次の画像は、私のプロジェクトを階層的に示しています(Ubuntuを使用していますが、ここで印刷画面のボタンを使用することを知らないので、画像について申し訳ありません)。
エラーの全体像が
`Exception in thread "main" java.lang.IllegalArgumentException: in must not be null!
at opennlp.tools.util.model.BaseModel.<init>(BaseModel.java:179)
at opennlp.tools.sentdetect.SentenceModel.<init>(SentenceModel.java:95)
at SentenceDetect.init(SentenceDetect.java:36)
at Main.main(Main.java:10)`
これらのパスを試してみましたが、同じエラーが発生しました。
- /Tokenizer/models/ja-sent.bin
- /models/ja-sent.bin
- モデル/ja-sent.bin
- /home/suri/workspace/2/Tokenizer/models/en-sent.bin
解決方法は?
へのパスを変更する必要があります。
.getResourceAsStream("en-sent.bin");
getResourceAsStreamはパッケージを読み込むので、これらのファイル(.bin)はソースフォルダ内にあります。
関連
-
[解決済み】「'void' type not allowed here」エラーの原因とは?
-
[解決済み】スレッド「main」での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [閉店]
-
[解決済み】 java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver [重複]。
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException
-
[解決済み】Javaメソッドスタブ
-
[解決済み】koch snowflake java recursion
-
[解決済み】 executeQuery()でデータ操作文が発行できない。)
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] 現在のスレッドがメインスレッドでないことを確認する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】リンクリストの負の値の数でnegativeCntrを代入する
-
[解決済み】popBackStack()とreplace()の操作はどう違うのですか?
-
[解決済み】Mockitoでモックからチェックされた例外を投げる
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み】破損したjarファイル
-
[解決済み】Java LinkedListでNodesを使用する
-
[解決済み] java.sql.SQLException を取得しました。ResultSet が終了した後の操作は許可されません。
-
[解決済み】intがnullであるかどうかを確認する方法
-
[解決済み】予期しない型エラー
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。