我收到java.net.SocketException:权限被拒绝:在Jenkins中发送电子邮件时连接
我的配置:我收到java.net.SocketException:权限被拒绝:在Jenkins中发送电子邮件时连接,java,windows-7,jenkins,Java,Windows 7,Jenkins,我的配置: Windows 7计算机 爪哇7 Jenkins 1.511在本地帐户上作为服务运行 myjenkins.xml文件 <service> <id>jenkins</id> <name>Jenkins</name> <env name="JENKINS_HOME" value="%BASE%"/> <executable>C:\Program Files\IBM\SDP8.5\jdk
- Windows 7计算机
- 爪哇7
- Jenkins 1.511在本地帐户上作为服务运行
<service>
<id>jenkins</id>
<name>Jenkins</name>
<env name="JENKINS_HOME" value="%BASE%"/>
<executable>C:\Program Files\IBM\SDP8.5\jdk\bin\java.exe</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 -Djava.net.preferIPv4Stack=true</arguments>
</service>
我对这个错误的理解是,Windows中存在一个漏洞,Java 7在防火墙和Java 7如何使用ipv4映射的ipv6地址方面暴露了该漏洞
据报告,这可以通过在java运行时中添加-Djava.net.preferIPv4Stack=true来解决。我已经成功地使用ANT电子邮件任务在此计算机上添加了-Djava.net.preferIPv4Stack=true。然而,在詹金斯,我没有任何运气
请注意,jenkins.xml文件似乎被完全忽略。未设置-Djava.net.preferIPv4Stack=true参数。PATH和JAVA_HOME都指向IBM运行时,但Jenkins仍然从Oracle v7运行时开始。詹金斯一定是在酝酿一个新的过程来启动和使用系统Java7
使用上面的配置,如果我转到Jenkins脚本控制台并使用“System.getProperty”(“java.net.preferIPv4Stack”)查询它,我什么也得不到(未设置)。如果我设置了该参数,我仍然会得到错误。如果我在命令行中添加-Djava.net.preferIPv4Stack=true(未使用服务),通过脚本控制台进行查询时仍未设置
我的问题
- 由于公司问题,我无法卸载Java 7
- 由于同样的问题,我无法安装Java6
- 我被允许安装IBMJDK/JRE
-jar
参数之后的参数将被传递给应用程序,而不是java vm。因此,请尝试将-Djava.net.preferIPv4Stack=true
移动到-jar
参数之前
2.如何让Jenkins使用-Djava.net.preferIPv4Stack=true参数和指定的运行时启动
我不确定Java运行时的情况,但这就是参数“-Djava.net.preferIPv4Stack=true”对我起作用的原因
1) 记事本“C:\ProgramFiles(x86)\Jenkins\Jenkins.xml”
2) 找到类似以下内容的行:
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 -Djava.net.preferIPv4Stack=true</arguments>
-Xrs-Xmx256m-Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle-jar“%BASE%\jenkins.war”--httpPort=8080-Djava.net.preferIPv4Stack=true
3) 将“-Djava.net.preferIPv4Stack=true”部分移动到-jar参数之前。它现在看起来应该类似于:
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Djava.net.preferIPv4Stack=true -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>
-Xrs-Xmx256m-Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle-Djava.net.preferIPv4Stack=true-jar“%BASE%\jenkins.war”--httpPort=8080
4) 保存文件,退出记事本
5) 重新启动jenkins服务
6) 从“管理Jenkins->配置系统”发送测试电子邮件“网页。电子邮件现在应该可以工作了。您尝试过在
-jar
参数之前移动-Djava.net.preferIPv4Stack=true
吗?这很有效!谢谢你能把它作为一个答案,这样我就可以检查它作为最佳答案吗?你能告诉我如何添加上面的-Djava.net.preferIPv4Stack=true。。我正在使用JDK 7。我不知道在哪里加上这个
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 -Djava.net.preferIPv4Stack=true</arguments>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Djava.net.preferIPv4Stack=true -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>