IDEから実行するとエラーが発生しないのに、SAP JCOとSAP IDOCのライブラリを使用するDropWizardで作成されたJavaプロジェクトがありますそれはjarファイルにパッケージ化されており、我々は次のスタックトレースを受けるjarファイルを実行しよう:エラーアプリケーションJARを実行しているときに "サーバーのデフォルトリポジトリの宛先XXXXが無効です" JAR
com.sap.conn.jco.JCoException: (106) JCO_ERROR_RESOURCE: Server default repository destination AGENT is invalid: Destination AGENT could not be created: java.lang.Error: java.security.NoSuchAlgorithmException: AES KeyGenerator not available
at com.sap.conn.jco.rt.DefaultServer.update(DefaultServer.java:240)
at com.sap.conn.jco.rt.DefaultServer.<init>(DefaultServer.java:117)
at com.sap.conn.idoc.jco.rt.DefaultJCoIDocServer.<init>(DefaultJCoIDocServer.java:47)
at com.sap.conn.idoc.jco.rt.DefaultJCoIDocServerFactory.createServer(DefaultJCoIDocServerFactory.java:17)
at com.sap.conn.idoc.jco.rt.DefaultJCoIDocServerFactory.createServer(DefaultJCoIDocServerFactory.java:13)
at com.sap.conn.jco.rt.DefaultServerManager.getServer(DefaultServerManager.java:104)
at com.sap.conn.jco.rt.StandaloneServerFactory.update(StandaloneServerFactory.java:362)
at com.sap.conn.jco.rt.StandaloneServerFactory.getServerInstance(StandaloneServerFactory.java:175)
at com.sap.conn.idoc.jco.JCoIDoc.getServer(JCoIDoc.java:301)
at com.enapsys.dw.bundles.sapidoc.api.SAPIdocServerListener.run(SAPIdocServerListener.java:38)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: com.sap.conn.jco.JCoException: (106) JCO_ERROR_RESOURCE: Destination AGENT could not be created: java.lang.Error: java.security.NoSuchAlgorithmException: AES KeyGenerator not available
at com.sap.conn.jco.rt.DefaultDestinationManager.update(DefaultDestinationManager.java:219)
at com.sap.conn.jco.rt.DefaultDestinationManager.searchDestination(DefaultDestinationManager.java:383)
at com.sap.conn.jco.rt.DefaultDestinationManager.getDestinationInstance(DefaultDestinationManager.java:99)
at com.sap.conn.jco.JCoDestinationManager.getDestination(JCoDestinationManager.java:104)
at com.sap.conn.jco.rt.DefaultServer.update(DefaultServer.java:218)
... 12 more
Caused by: java.lang.Error: java.security.NoSuchAlgorithmException: AES KeyGenerator not available
at com.sap.conn.jco.util.Codecs$AES.generateSecretKey(Codecs.java:1020)
at com.sap.conn.rfc.engine.GUID.<clinit>(GUID.java:62)
at com.sap.conn.jco.rt.JCoRuntime.createSecureString(JCoRuntime.java:1344)
at com.sap.conn.jco.rt.DefaultDestinationManager.checkAndCopyProperties(DefaultDestinationManager.java:549)
at com.sap.conn.jco.rt.DefaultDestinationManager.getProperties(DefaultDestinationManager.java:345)
at com.sap.conn.jco.rt.DefaultDestinationManager.update(DefaultDestinationManager.java:171)
... 16 more
Caused by: java.security.NoSuchAlgorithmException: AES KeyGenerator not available
at javax.crypto.KeyGenerator.<init>(KeyGenerator.java:169)
at javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:223)
at com.sap.conn.jco.util.Codecs$AES.generateSecretKey(Codecs.java:1015)
... 21 more
当社.jcoServerファイルは次のようになります。
jco.server.progid=AGENT
jco.server.name=MYSERVER
jco.server.gwhost=xx.xx.xx.xx
jco.server.gwserv=xxxx
jco.server.connection_count=1
jco.server.repository_destination=AGENT
当社.jcoDestinationファイルは次のようになります。
jco.client.type=3
jco.client.client=001
jco.client.user=xxxxxx
jco.client.passwd=xxxxxx
jco.client.lang=en
jco.client.ashost=xxxxxxxx
jco.client.sysnr=00
jco.client.trace=0
jco.destination.repository_destination=AGENT
我々はjarファイルを実行すると、私たちはこのようにそれを実行します。私たちのJavaアプリケーションは、我々はIDEとしてのIntelliJを使用して、ERPからIDocを送受信するので、
java -jar -Djava.ext.dirs=lib agent.jar server applicationConfiguration.yml
先とサーバ共有し、同じプログラムIDそこからアプリケーションを実行してもエラーは発生せず、期待どおりに動作します。
この問題には既知の原因はありますか? IDEの外でjarを実行する場合、実行するには特定のパラメータが必要ですか? 宛先AGENTを作成できませんでしたメッセージはに関連していますNoSuchAlgorithmExceptionエラー?
私たちはjap内に配布できないと言われていたsapjcoとsapidocライブラリをlibフォルダに配置しました。これをどのように進めるべきでしょうか?マニフェストや他の場所への参照を追加する必要がありますか? –
プロジェクトの依存関係はMavenで処理されるため、問題の一部になる可能性があります。 –
@UrielArvizu:アプリをどこでも実行したい場合は、アプリでインストールし、相対パスをClass-pathに入れます:マニフェストでは正式な方法です。私はMavenとマニフェストの生成方法を知らない。私はそれが医者にあり、すでにQがあるかもしれないと思います。 1台または数台のマシンで実行したいだけで、アクセス権があり、lib jarがあまり変更されない場合は、リンクごとにJREまたは 'site'ディレクトリに入れておきます。それらはすべてのアプリに「自動的に」利用可能です。 –