我在 jar 文件中有一个 java 控制台应用程序。它通过调用肥皂服务axis2 http://axis.apache.org/axis2/java/core/。我在用这个博客 http://www.nandana.org/2008/08/want-to-run-apache-axis2-behind-proxy.html作为例子。我添加的具体配置项如下:
<parameter name="Proxy">
<Configuration>
<ProxyHost>localhost</ProxyHost>
<ProxyPort>8888</ProxyPort>
</Configuration>
</parameter>
我尝试将其放入 jar 根目录中的 axis2.xml 文件中。我也编辑过C:\Program Files\Apache Software Foundation\axis2-1.5.4\conf\axis2.xml
.
我的 AXIS2_HOME 设置正确:
set AXIS2_HOME
AXIS2_HOME=c:\Program Files\Apache Software Foundation\axis2-1.5.4
我确认流量肯定是通过以下方式直接发送到服务器的WireShark http://www.wireshark.org/.
您遇到此问题是因为 JRE 无法找到配置文件。
是的,配置文件应该放在 jar 文件之外,因为程序无法读取 jar 文件(已压缩)内的配置文件。
这里的问题是你必须将你的程序正确地指向配置文件。
相对文件路径是从 Java 运行时环境的启动位置计算的。
(我们应该使用相对文件路径,因为我们想避免使用绝对文件路径,因为并非每个人都有相同的系统环境,因此绝对文件路径在不同的环境中不起作用)
在这种情况下,如果您不确定 JRE 从哪里启动,导致您无法计算相对文件路径,您可以执行以下操作:
File file = new File("");
System.out.println(file.getAbsolutePath());
这将帮助您找出 JRE 的启动位置。您应该知道相对文件路径是根据 JRE 启动的目录计算的。
对于 axis2,工作目录(JRE 启动的位置)应该是 Apache Tomcat 的 bin 文件夹,而对于您的程序,它将取决于您调用 JRE 来启动程序的位置。
我建议您将配置文件放在易于访问的地方。
假设您想使用 AXIS2_HOME,并且将配置文件放置在 AXIS2_HOME 目录中,则可以在 jar 程序中执行以下操作来查找配置文件:
String value = System.getenv("AXIS2_HOME"); // gets the AXIS2_HOME environment variable
File file = new File(value+"/"+axis2.xml);
我想你已经明白我所说的要点了。希望有帮助! (:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)