Java applet找不到JavaPOS配置文件

问题描述:

我创建了一个使用JavaPOS与用户本地系统上的付款终端进行通信的小程序。Java applet找不到JavaPOS配置文件

从Eclipse IDE中运行时,applet可以正常工作,但在浏览器中运行时无法正常工作。在浏览器中,applet似乎无法找到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注册表中。

我试过下面让小程序“看到”的两个文件:

  1. 初级专业人员/ RES/jpos.properties已经存在于由小应用程序所引用的罐子之一。不过,我已经将该文件添加到小程序的主jar中。我也尝试将其添加到包含罐子的服务器上的目录(使用正确的相对路径)。这些都不起作用。

  2. 我可以解决无法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。该文件存在于applet的主jar文件的根目录中。我试着把服务器放在与罐子相同的目录中。我也尝试创建一个单独的jar文件,其中只包含jposxml.cfg,但这也不起作用。我得到的Java控制台窗口中下面的输出:

    [AbstractRegPopulator]getPopulatorFileIS(): populatorFileName=jposxml.cfg 
    [JposServiceLoader]manager.getEntryRegistry().load() OK 
    [AbstractRegPopulator]getPopulatorFileIS(): populatorFileName=jposxml.cfg 
    

    但JposEntries的列表是空的。结果,小应用程序无法与付款终端进行通信。

该applet通过JNLP文件(以及所有需要的jar通过JNLP扩展)加载。两个JNLP文件的安全性设置为< all-permissions/>。所有瓶子都使用相同的证书签名。 Eclipse中相同的代码完美工作。关于什么问题的任何想法?

+0

我有同样的问题。它与尝试加载jpos.properties文件时尝试加载sunrsasign.jar有关,但该jar仅包含在较早的JDK中。任何想法为什么它试图加载这个文件? – 2013-07-04 19:22:35

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

我无法获得JavaPOS代码来查看jpos.properties文件,但如上所述将值加载到系统属性中,所以我现在要坚持这一点。

要让JavaPOS从URL加载jpos.xml或jposxml.cfg,您需要设置属性jpos.config.populatorFileURL而不是jpos.config.populatorFile。这可以在jpos.properties中设置,或者作为一个System属性来设置。

面临同样的问题。

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

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

C:/myapp/target/classes 

然后jpos.properties应该是由路径

C:/myapp/target/classes/jpos/res/jpos.properties 

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