何が原因とNullPointerExceptionを実行する場合は、JARコマンドラインからないことが明らかにIDE?

StackOverflow https://stackoverflow.com/questions/1137170

  •  16-09-2019
  •  | 
  •  

質問

いプロジェクトにはEclipse.かけるので内側からEclipse全ての作品です。しかし、私はAntビルドスクリプトを実行するJARのいずれかからのコマンドラインを利用したバッチスクリプトを取得しまNullPointerException。

は、NullPointerExceptionがスローされているから第三者の瓶をまとめましたのでよろしければます。でも、私がしていることは間違いの問題での時に実行でEclipse!

どんなことが原因でしょうか、どのように行って隔離の問題を修正ですか?

こちらはのどれにも当てはまらないスタックトレースしていき:

java.lang.NullPointerException
        at java.io.FilterInputStream.read(Unknown Source)
        at java.io.BufferedInputStream.fill(Unknown Source)
        at java.io.BufferedInputStream.read(Unknown Source)
        at java.io.DataInputStream.readUnsignedByte(Unknown Source)
        at com.jhlabs.dbf.DBFFile.readHeader(DBFFile.java:129)
        at com.jhlabs.dbf.DBFFile.<init>(DBFFile.java:76)
        at com.jhlabs.map.shapefile.Shapefile.<init>(Shapefile.java:102)
        at com.jhlabs.map.layer.ShapefileLayer.<init>(ShapefileLayer.java:62)

を確認しましたがクラスパス-第三者のJARは実際のクラスパス.しかし、期待されているかNoClassDefFoundExceptionない場合、また活用のクラスはJAR.

私も次の場所を使用したclassloaderは、nullでない場合や正しい荷重に適切なファイルです。

役に立ちましたか?

解決

1つの推測:使用を使用してリソースを見つけようとしています ClassLoader.getResourceAsStream() 同様であり、瓶でそれを見つけていません。

もちろん、それがnpeであることではなく、スタックトレースの残りの部分を教えてくれるなら、私たちはかなり少ないでしょう...そして、あなたがソースを持っているという事実は、あなたが運動できるはずです まさに それがうまくいかないところ!

編集:はい、そのスタックトレースを使用すると、おそらく作成されています FilterInputStream しかし、aを通過します null ラップするためにストリーミング。 (JDKはコンストラクターに本当に例外を投げるはずですが、今それを修正するには遅すぎます。)

他のヒント

後者の場合、DBFファイルパスが正しく解決されていないように見えます。 Eclipseでクラスファイルを実行する場所からのファイルパスは、バッチファイルを実行している場所とほとんど異なります。 (クラスパスではありませんが、Java -jar ...などの物理的なパス...、d: my app binのように)eclipseが実行するパスは実行構成です - >引数タブ - >作業ディレクトリフィールド。

すべて添付する方法をデバッガタのプログラムのいくつでも添付することができIDEのソースがこのプログラム.いJon Skeetこれをファイルが見つからなかった-変更してみてください現在の直接のための実行環境の設定がやりとりするいわゆる"。

コマンドラインから走るとき、サードパーティの瓶があなたの道にいることを確認してください。

を実行しようでは、JDKではなくJREのどこでも、だれ線ございますNullPointerExceptionだいの源です。

また、コンパイルでのデバッグ情報を有効にしながら覚え、Ant javacタスクの手動)。

Eclipse Runタスクのクラスパスと手動アプローチのクラスパスは異なると思います。 [実行構成]ダイアログに移動し、Eclipse RunタスクのClassPathタブを確認し、バッチに同じエントリがあることを確認します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top