有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java引用Maven jar中JSSE的密钥库文件

我正在尝试使用JSSE for SSLsocket编写一个简单的客户机/服务器应用程序。 我已经用keytool为服务器生成了我自己的“手工”证书,我必须设置属性“keystore”,如下所示:

System.setProperty("javax.net.ssl.keyStore","/keystore.ks");

问题如下:

据我所知,setProperty只需要文件名,而不是文件本身。 在IDE中,如果我使用文件的路径(即src/main/resources/keystore.ks,使用标准的maven目录结构),它就可以正常工作 问题是在我用maven做了这个罐子之后出现的。找不到资源

我知道资源文件是在JAR的根目录下复制的,但我没有找到任何方法来获取正确的文件名,以便提供给setProperty

我也试过了

String pathKeystore=Server.class.getResource("/keystore.ks").getPath();

还有。toString()。toExternalForm()等等。但是如果以后我用这个字符串设置属性,这些都不起作用。 在其他问题上,我发现路径名通常不用于资源,而只是读取文件,但我需要字符串

由于我是Maven的新手,我对自己正在做的事情没有很好的理解,但基本上我的问题可以总结如下:

在maven构建的JAR文件中,如何获取要用作setProperty方法字符串的资源文件的正确路径名

提前感谢大家

编辑: 我还考虑在运行时设置属性: 我把我的罐子装满了水

java -Djavax.net.ssl.keyStore=keystore.ks -jar my_jar.jar

我仍然在代码中设置了这个密钥库的密码,因为我对这个密钥库的路径没有问题

我想补充一点,我在自己的客户机上遇到了同样的问题,我必须手动添加trustStore,然后用

java -Djavax.net.ssl.trustStore=jssecacerts -jar my_client_jar.jar

这很好,我想这是应该做的,而不是使用文件名


共 (0) 个答案