gpt4 book ai didi

java - 运行应用程序 JAR 时出现错误 "Server default repository destination XXXX is invalid"

转载 作者:行者123 更新时间:2023-11-29 04:37:44 27 4
gpt4 key购买 nike

我们有一个使用 SAP JCO 和 SAP IDOC 库的 DropWizard 制作的 Java 项目,当从 IDE 运行时它不会抛出任何错误,但是当它被打包到一个 jar 中并且我们尝试运行 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 -jar -Djava.ext.dirs=lib agent.jar server applicationConfiguration.yml

目标和服务器共享相同的程序 ID,因为我们的 Java 应用程序从 ERP 发送和接收 iDoc,我们使用 IntelliJ 作为 IDE 并从那里运行应用程序不会抛出任何错误并按预期工作。

此问题是否有已知原因?在 IDE 外运行 jar 时,是否需要特定参数才能运行? Destination AGENT could not be created 消息与 NoSuchAlgorithmException 错误有何关联?

最佳答案

设置 java.ext.dirs 破坏了 Java 加密,因为(大多数)提供程序都在扩展 jar 中。

'添加到应用程序' jars 应该在类路径中(但是使用 -jar 它们必须在 list 而不是命令行中设置)和'添加到系统' jar 通常应该放在(复制或符号链接(symbolic link))JVM 的标准位置之一 which vary by platform and install .如果您真的必须在 ext.dirs 中使用自己的目录,则需要添加而不是替换依赖于平台的默认值。

关于java - 运行应用程序 JAR 时出现错误 "Server default repository destination XXXX is invalid",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40558057/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com