4

javaaddpathコマンドを使用して、外部jar(自分で開発)をmatlabプロジェクト(自分で開発)に使用しています。

プログラミング環境をMatlabr2011aからr2012bに、jdkを1.6.0_29から1.7.0_09に、ウィンドウをXPからSevenに更新しました。

まず、jarファイルを再コンパイルしておらず、プロジェクト全体がまだ機能しています(バグなしで実行されています)。

しかし今、私は自分のjarファイルを再コンパイルしようとしています。私はそれに関していくつかの問題を抱えていましたが、それは解決しました(javac @ <opiton_file>とencodingを参照)。しかし、jarツールが再構築されたため、matlabで使用できません... Matlabはエラーを表示します:

Undefined variable "optimizer" or function "optimizer.Gui".

ここで、optimizerはパッケージです(つまり、jarファイル内のディレクトリ、Guiクラスを含むディレクトリ)。

要約すると、私はコードを使用しています(最後の行はJFrameをポップアップする必要があります):

javaaddpath('the full path of my jar file.jar');
optimizer.Gui;

コンパイルされたバージョンのjarファイルを更新しなくても、機能しています。新しいバージョン(同じソースコード)では、matlabはエラーを出力します。

jarファイルのルートにMainクラス(main関数を含む)があり、このMainクラスをmainクラスとして指定するmanitifestがあります。このメインクラスは、jarファイルへのすべての機能が機能していることを確認するためにいくつかのテストを行います。したがって、java -jar my_jar_file.jarを実行して、すべてのテストに問題がないことを確認できます(テストの1つにoptimizer.Guiが表示されました)。

javacバージョンとmatlabの非互換性はありますか?ファイルのエンコードに問題があったからですか?...

4

2 に答える 2

2

わかりました。JDK1.6.0_37(最後に使用可能な1.6バージョン)を再インストールしました。この古いjdkへのパスを強制するだけで、ビルドツール(create_jar.bat)を使用しました。そして、それはMatlab r2012bの下で魅力のように機能しています!

-> Matlab r2012bは、jdk1.7でビルドされたjarファイルと互換性がありません。

(これを妨げないようにMatworksに感謝します)。

于 2013-01-09T13:48:04.207 に答える
1

それはMATLABとは何の関係もありません。その一般的なJAVA設計の制限。JRE6でJRE7用にコンパイルされたクラスを使用することはできません。

MATLABはJRE6を使用しているため、JAVA側からの制限により、JAVA7クラスを使用することはできません。

于 2013-01-09T13:57:05.200 に答える