から1つのファイルを再コンパイルし、この問題は、彼がコメントの助けwitht解決されています逆コンパイル&瓶
正しいターゲットバージョンを使用してJavaを再コンパイルする必要がありました。私の場合、単にjavac
の代わりにjavac -source 1.3 -target 1.3
のトリックでした。
問題の説明:
私は、単一のURL文字列を変更する必要のあるコンパイルの.jar Javaプログラムを持っています。 JDを使用すると、コードを逆コンパイルして変更を加えることができました。
プロジェクト全体を再コンパイルするのを避けたいのですが、.classファイルに変更した単一の.javaファイルを単純に再コンパイルして元のファイルに置き換えることができたと思います。
しかし、jarを再パッケージ化した後、プログラムは起動しますが、変更したコードを使用する機能が不規則に動作します。私が見つけたログで
:問題の
E EventDispatchThreadExceptionHandler:Unhandled exception occurred during event dispatching.::
java.util.MissingResourceException: Can't find bundle for base name com.myCompany.mySoftware.resources.ModuleResources, locale en_US
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:842)
ModuleResources.javaは私が変更されたファイルである...
分析:
- Repackageingが故障していません:元の瓶を取り出して再パッケージ化すれば、すべてが機能します。
- 私の修正は問題ではないようです.JDデコンパイルされたJavaファイルを再コンパイルし、結果のクラスファイルを再パッケージ化に使用すると、同じエラーが発生します。
Iは再パッケージ化JARファイルを逆コンパイルし、元のJARファイルの逆コンパイルとそれを比較した:私が変更されたファイルでは、(少なくとも)コードが同一であるようだが、JDは、異なる行番号を示しています。それは問題を暗示することができますか?
ご協力いただければ幸いです。
多くの感謝!私はJD-逆コンパイルJavaファイルを再コンパイルし、再パッケージの結果のクラスファイルを使用する場合
「プログラムが実行されていません」はかなり曖昧です - 詳細をお知らせください。 –
JARのクラスはどのバージョンのJavaに対してコンパイルされていましたか?どのバージョンのJavaを使ってクラスを再コンパイルしていますか?エラーメッセージは何ですか? – Perception
一般的に、この方法で動作するはずです。ジョンが言ったように、私たちは問題に関するより多くの情報が必要です - あなたは例外を見ますか? –