我创建了一个applet,它使用JavaPOS与用户本地系统上的支付终端进行通信。
在Eclipse中运行时,applet可以正常工作,但在浏览器中运行时就不行了。在浏览器中,applet似乎找不到jpos/res/jpos.properties和jposxml.cfg文件。
当在applet中执行以下语句时(在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注册表中加载任何条目。
我尝试了以下方法来使applet“查看”这两个文件:
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中,相同的代码工作得很好。对问题是什么有什么想法吗?
发布于 2012-04-11 09:27:29
这是供任何面临类似问题的人参考。
我无法获得JavaPOS代码来查看jpos.properties文件,但是像上面描述的那样将值加载到系统属性中是可行的,所以现在我将继续这样做。
要让JavaPOS从URL加载jpos.xml或jposxml.cfg,需要设置属性jpos.config.populatorFileURL而不是jpos.config.populatorFile。可以在jpos.properties中将其设置为系统属性,也可以将其设置为系统属性。
发布于 2017-11-30 12:35:59
也面临着同样的问题。
JposServiceLoader使用类路径查找路径的根。
例如,如果应用程序的本地类路径是
C:/myapp/target/classes那么jpos.properties应该是path
C:/myapp/target/classes/jpos/res/jpos.properties也许这不是放置jpos文件的最佳方式,但至少可以从解决这个问题开始。
发布于 2022-01-06 15:56:51
你有两种方法:
( 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")
将jpos.properties和jpos.xml文件添加到jposXXX/jpos/res/,
将文件夹jposXXX转换为jar文件
例如,通过终端jar cvf jposXXX.jar jposXXX中的命令
将jar文件放入app/libs/文件夹
添加到gradle依赖项行中
implementation fileTree(dir: 'libs', include: ['*.jar'])
享受
https://stackoverflow.com/questions/9997336
复制相似问题