2016-07-27 3 views
1

Mavenを使ってJavaプロジェクトをビルドしていて、最終的にtarget/classes/resourcesフォルダにあるスクリプトファイルがあります。私はthis.getClass.getResource("/lookUpScript.py").getPath()でファイル自体にアクセスできますが、"." + this.getClass.getResource("/lookUpScript.py").getPath()でシェルコマンドを実行することはできません。最終的には./lookUpScript.pyとなります。シェルコマンドを実行するには、私の会社のコードの一部であるメソッドを使用しています。これは、ファイルに関係しないコマンドでうまく動作するようになっています。これを修正するかもしれないMavenビルドのリソース領域にあるファイルにアクセスする標準的な方法がありますか?Maven build with Java:リソースにあるスクリプトを実行するには?

+0

スクリプトは実行可能ですか?それは '#!/ usr/bin/python'に向かっていますか?印刷されたエラーや何も起こりませんか? –

+0

はい、実行可能で、プログラムの外で自分で実行できます。アプリケーションを企業サーバにデプロイすると、スクリプトファイルに関連したエラーが見つかりません。 – SVN600

+0

'this.getClass()。getClassLoader()。getResource("/lookUpScript.py ")。getPath()' Ifそれは動作しません、サーバー上で実行されているときに生成されているパスを見てみてください。 –

答えて

1

すべての成果物のmavenパスは、プロジェクトの実行時またはプロジェクトのエクスポート時に生成されるものと同じではありません。これを確認するには、プロジェクトをJar/War/Earファイルとしてエクスポートし、winRARまたは他のツールを使用してプロジェクトを表示します。

リソースは、jarプロジェクトの場合はcomディレクトリと並行している必要がありますが、再確認できます。

+0

私はこれを追加するのが好きです。クラスパス内のリソースはファイルではありません。 Phytonスクリプトを実行したい場合、そのインタプリタはファイルを読むことができる必要がありますが、それはjarの中にあります。 webapp/WEB-INFのどこかにwarファイルを作成する場合は、最初にjarファイルをディレクトリにコピーしてそこから実行するか、クラスまたはリソースフォルダの外にパッケージ化する必要があります。 – wemu

関連する問題