2

皆さん、オンラインでたくさんのフォーラムを調べたり、多くのプロの Java 開発者に尋ねたりしましたが、現在仕上げている金融アプリケーションのスタンドアロンの実行可能な jar ファイルを作成するための適切な支援を見つけることができませんでした。アプリケーションは 2 つの外部プログラムを使用します。convert という ImageMagick ファイル変換プログラムと、gocr045 という OCR プログラムです。私はこのアプリケーションを Eclipse で開発し、Eclipse の自動化された実行可能な jar ファイル作成ウィザードを使用してコンテンツをパッケージ化することを何度も試みました。私のマシンではすべてが正常に機能し、アプリは想定どおりに機能しますが、何らかの理由でアプリが別のコンピューターで実行されると、コンパイルされて GUI が表示されますが、2 つの外部機能が機能しません。これらの機能を他のマシンにインストールしましたが、これまでのところ、この問題に対して私が見つけた唯一の回避策は、Eclipse を介してマシン上で実行可能な jar を手動で作成することです。残念ながら、アプリは完成後に商品化される予定であり、Eclipse をインストールしてから、それを購入するすべてのユーザーにアプリをインストールすることはできないため、これは機能しません。これは些細な問題だと思いますが、皆さんのような Java の専門家がすぐに解決してくれることを願っています。おそらくjarファイルの署名と関係がありますか?これは些細な問題だと思いますが、皆さんのような Java の専門家がすぐに解決してくれることを願っています。おそらくjarファイルの署名と関係がありますか?これは些細な問題だと思いますが、皆さんのような Java の専門家がすぐに解決してくれることを願っています。おそらくjarファイルの署名と関係がありますか?

ありがとうございます。すぐにご連絡をお待ちしております。

マーク・コーガン KoganApps (www.koganapps.com)

4

3 に答える 3

0

マシンのPATHに個別のexeが追加されていますか?Runtime.exec()メソッドを呼び出すときに、exeへのフルパスを指定していない場合は、システムパスから場所を取得している可能性があります。

私は...するだろう

  1. jarの場所に対して既知の場所にあるexeを確認します
  2. Runtime.exec()メソッドは、この既知の相対位置を使用します
  3. exeがjar内に保持されていないことを確認します(保持されている場合は機能しないと思います)

署名はそれとは何の関係もないと思います。

于 2010-09-13T04:32:05.840 に答える
0

あなたが言っthere is a JApplet wrapped in a JFrameたように、それはセキュリティ例外である可能性があります。通常、システムに JDK がインストールされていて、Eclipse を使用している場合、JDK フォルダー内の JRE が取得されます。実行可能な jar としてバンドルし、別のシステムで実行しようとすると、java.exe..c:\program files\java\jre\binこの場合、適切に署名され、必要なアクセスが与えられない限り、アプリは機能しません。権利。

そこで、次のチェックを行います。

  1. システムでどの jre が使用されているか。それがjdk内にあるかどうかc:\program files\java\jre\bin
  2. アプリをデプロイした他のシステムでも同じことを確認してください

: 必要なすべてのパス変数が設定されていると想定しています。

提案:

  1. のソース コードにアクセスして、ImageMagickそこJOCRから dll を作成し、JNA( https://jna.dev.java.net/) を使用して呼び出します。
  2. JApplet の代わりに JPanel を使用する
于 2010-09-23T08:03:48.457 に答える
0

Rafe-最終的な目標は、アプリが Windows と Mac の両方で動作することです。外部ソフトウェアを使用して、Mac 上の exe ファイルを mac os x で実行できるファイルに変換します。続いて、これらの変換されたファイルに対して Runtime.exec() メソッドを呼び出します。

Mike - 外部プログラムへの直接パスを指定しておらず、jar がコンピューターで実行されていないときにシステム パスが推測されている可能性があるため、これが当てはまるのではないかと思いました。ただし、アプリは JFrame にラップされた JApplet で構成されています。アプレットのセキュリティ制限は、私が抱えている問題と関係がありますか? そしてもちろん、ClassLoader はインスタンス化された同じ jar ファイルで外部プログラムを実行できないため、私の exe は jar の外部にある外部フォルダーに配置され、そこから呼び出されます。

助けてくれてありがとう。結果についてはすぐに返信します。うまくいけば、今はうまくいきます。

于 2010-09-13T11:57:20.917 に答える