【发布时间】:2023-04-06 06:57:01
【问题描述】:
我创建了一个小程序,它使用 JavaPOS 与用户本地系统上的支付终端进行通信。
在 Eclipse IDE 中运行时,小程序可以正常工作,但在浏览器中运行时却不行。在浏览器中,小程序似乎找不到 jpos/res/jpos.properties 和 jposxml.cfg 文件。
在小程序中执行以下语句时(在 start() 方法中,而不是 init() 中):
JposEntryRegistry registry = JposServiceLoader.getManager().getEntryRegistry();
registry.load();
这是我在 Java 控制台窗口中看到的输出:
jpos/res/jpos.properties file not found
jpos/res/jpos.properties file not found
jpos/res/jpos.properties file not found
并且 JposEntry 注册表中没有加载任何条目。
我尝试了以下方法让小程序“看到”这两个文件:
jpos/res/jpos.properties 已存在于小程序引用的其中一个 jar 中。不过,我已将此文件添加到小程序的主 jar 中。我还尝试将它添加到包含 jars 的服务器上的目录中(使用正确的相对路径)。这些都不行。
-
我可以通过使用适当的值设置系统属性来解决无法找到 jpos.properties 的问题,如下所示:
System.setProperty("jpos.loader.serviceManagerClass", "jpos.loader.simple.SimpleServiceManager"); System.setProperty("jpos.config.populatorFile", "jposxml.cfg"); System.setProperty("jpos.util.tracing.TurnOnNamedTracers", "JposServiceLoader,SimpleEntryRegistry,SimpleRegPopulator,XercesRegPopulator"); System.setProperty("jpos.util.tracing.TurnOnAllNamedTracers", "ON");但是,小程序仍然找不到 jposxml.cfg。该文件位于小程序主 jar 文件的根目录中。我尝试将服务器放在与罐子相同的目录中。我也尝试过创建一个单独的 jar 文件,其中只包含 jposxml.cfg,但这也不起作用。我在 Java 控制台窗口中得到以下输出:
[AbstractRegPopulator]getPopulatorFileIS(): populatorFileName=jposxml.cfg [JposServiceLoader]manager.getEntryRegistry().load() OK [AbstractRegPopulator]getPopulatorFileIS(): populatorFileName=jposxml.cfg但是 JposEntries 的列表是空的。因此小程序无法与支付终端通信。
小程序通过 JNLP 文件加载(所有需要的 jars 通过 JNLP 扩展加载)。两个 JNLP 文件都将安全设置为
【问题讨论】:
-
我也有同样的问题。它与尝试加载 jpos.properties 文件时尝试加载 sunrsasign.jar 有关,但该 jar 仅包含在早期的 JDK 中。知道它为什么要加载这个文件吗?