チケット #37847

ava.lang.Error: factory already defined java

登録: 2017-12-30 00:20 最終更新: 2018-04-18 22:08

報告者:
(匿名)
担当者:
チケットの種類:
状況:
完了
コンポーネント:
(未割り当て)
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
直さない
ファイル:
なし

詳細

先日は、ご親切に対応していただき、ありがとうございました。

また、エラーに遭遇いたしまして、このエラーの対処について、どこを調べれば解決するのでしょうか?

C:\Users\maeda7\Documents\exewrap1.2.3\x64>exewrap -g Snippet78.jar

Architecture: x64 (64-bit)

Target: Java 5.0 (1.5.0.0)

Snippet78.exe (64-bit) version 0.0.0.1

C:\Users\maeda7\Documents\exewrap1.2.3\x64>Snippet78.exe

実行時の画面で表示されるメッセージ:java.lang.Error: factory already defined java

C:\Users\maeda7\Documents\exewrap1.2.3\x64>type Snippet78.log

Missing attributes for JarRsrcLoader in Manifest (Rsrc-Main-Class, Rsrc-Class-Path)

eclipse 上から「実行=>Java アプリケーション」は、問題なし。

エキスポート=>実行可能JARファイル=>軌道構成:Snippet78-Snippet78Prj、ライブらしー処理:生成されるJRAに必須ライブラリをパッケージ

上記で作成したJarファイルのダブルクリックは、問題なし。

eclipseのエキスポートでやるには、設定が足りない所などがあるのでしょうか?

eclipseのバージョンは「Version: Oxygen.2 Release (4.7.2)」です。

チケットの履歴 (3 件中 3 件表示)

2017-12-30 00:20 更新者: None
  • 新しいチケット "ava.lang.Error: factory already defined java" が作成されました
2017-12-30 10:22 更新者: hirukawa_ryo
  • 詳細が更新されました
コメント

お問い合わせありがとうございます。

実行時の画面で表示されるメッセージ:java.lang.Error: factory already defined java

生成されるJRAに必須ライブラリをパッケージ

Eclipseの実行可能JARエクスポートではライブラリの処理方法を3種類の中から選択することができます。

* 生成されるJARに必須ライブラリーを抽出 (Extract required libraries into generated JAR)

* 生成されるJARに必須ライブラリーをパッケージ (Package required libraries into generated JAR)

* 生成されるJARの隣のサブフォルダーに必須ライブラリーをコピー (Copy required libraries into a sub-folder next to the generated JAR)

2つ目の「生成されるJARに必須ライブラリーをパッケージ」はEclipse固有の特殊な形式です。 通常、JARファイルの中にJARファイルを入れることはできないのですが、この特殊形式ではJARファイルの中にJARファイルを入れて、同時にEclipseの専用クラスを同梱して独自の方法でJARファイルの中からJARファイルを取り出せるように工夫しています。このEclipse専用クラスがエラーメッセージにも表れている org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.class です。

この JarRsrcLoader.class は exewrap と似た仕組みでURLStreamHandlerを使用して埋め込みJARからリソースを参照する仕組みになっているようです。そのため、exewrapと動作が競合してしまいます。

exewrapを使用する場合は、eclipseの特殊形式JARではなくJavaで一般的に使われている実行可能JAR形式を使用するようにしてください。Eclipseからエクスポート操作をする場合は「生成されるJARの隣のサブフォルダーに必須ライブラリーをコピー (Copy required libraries into a sub-folder next to the generated JAR)」を選択することで、一般的な実行可能JAR形式を作成できます。

2018-04-18 22:08 更新者: hirukawa_ryo
  • 解決法なし から 直さない に更新されました
  • 担当者(未割り当て) から hirukawa_ryo に更新されました
  • 状況オープン から 完了 に更新されました

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする