首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaPOS找不到JavaPOS配置文件

JavaPOS找不到JavaPOS配置文件
EN

Stack Overflow用户
提问于 2012-04-03 16:17:08
回答 3查看 4.1K关注 0票数 2

我创建了一个applet,它使用JavaPOS与用户本地系统上的支付终端进行通信。

在Eclipse中运行时,applet可以正常工作,但在浏览器中运行时就不行了。在浏览器中,applet似乎找不到jpos/res/jpos.properties和jposxml.cfg文件。

当在applet中执行以下语句时(在start()方法中,而不是init()):

代码语言:javascript
复制
JposEntryRegistry registry = JposServiceLoader.getManager().getEntryRegistry();
registry.load();

这是我在Java控制台窗口中看到的输出:

代码语言:javascript
复制
jpos/res/jpos.properties file not found
jpos/res/jpos.properties file not found
jpos/res/jpos.properties file not found

并且没有在JposEntry注册表中加载任何条目。

我尝试了以下方法来使applet“查看”这两个文件:

  1. jpos/res/jpos.properties已经存在于applet引用的一个jars中。尽管如此,我还是将这个文件添加到applet的主jar中。我还尝试将其添加到包含jars的服务器上的目录中(具有正确的相对路径)。所有这些都行不通。
  2. I可以通过使用适当的值设置系统属性来解决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");

但是,applet仍然找不到jposxml.cfg。该文件存在于applet主jar文件的根目录中。我尝试将服务器放在与jars相同的目录中。我还尝试创建一个只包含jposxml.cfg的单独jar文件,但这也不起作用。我在Java控制台窗口中获得了以下输出:

JposServiceLoadermanager.getEntryRegistry().load() AbstractRegPopulatorgetPopulatorFileIS():populatorFileName=jposxml.cfg OK AbstractRegPopulatorgetPopulatorFileIS():populatorFileName=jposxml.cfg

但是JposEntries的列表是空的。因此,applet无法与支付终端通信。

applet通过JNLP文件加载(所有所需的jars都通过JNLP扩展名加载)。两个JNLP文件的安全性设置为。所有的jars都用相同的证书签名。在Eclipse中,相同的代码工作得很好。对问题是什么有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-11 09:27:29

这是供任何面临类似问题的人参考。

我无法获得JavaPOS代码来查看jpos.properties文件,但是像上面描述的那样将值加载到系统属性中是可行的,所以现在我将继续这样做。

要让JavaPOS从URL加载jpos.xml或jposxml.cfg,需要设置属性jpos.config.populatorFileURL而不是jpos.config.populatorFile。可以在jpos.properties中将其设置为系统属性,也可以将其设置为系统属性。

票数 5
EN

Stack Overflow用户

发布于 2017-11-30 12:35:59

也面临着同样的问题。

JposServiceLoader使用类路径查找路径的根。

例如,如果应用程序的本地类路径是

代码语言:javascript
复制
C:/myapp/target/classes

那么jpos.properties应该是path

代码语言:javascript
复制
C:/myapp/target/classes/jpos/res/jpos.properties

也许这不是放置jpos文件的最佳方式,但至少可以从解决这个问题开始。

票数 0
EN

Stack Overflow用户

发布于 2022-01-06 15:56:51

你有两种方法:

  1. 忽略此错误并从代码中设置属性(如前所述)

( System.setProperty("jpos.config.populatorFile","jposxml.cfg");System.setProperty("jpos.util.tracing.TurnOnNamedTracers","JposServiceLoader,SimpleEntryRegistry,SimpleRegPopulator,XercesRegPopulator");System.setProperty("jpos.util.tracing.TurnOnAllNamedTracers","ON");System.setProperty("jpos.loader.serviceManagerClass","jpos.loader.simple.SimpleServiceManager")

  1. 提取您的jposXXX.jar(通常指版本),

将jpos.properties和jpos.xml文件添加到jposXXX/jpos/res/,

将文件夹jposXXX转换为jar文件

例如,通过终端jar cvf jposXXX.jar jposXXX中的命令

将jar文件放入app/libs/文件夹

添加到gradle依赖项行中

implementation fileTree(dir: 'libs', include: ['*.jar'])

享受

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9997336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档