当前位置: 首页 > 面试题库 >

我收到java.net.SocketException:权限被拒绝:在Jenkins中发送电子邮件时连接

宗涵蓄
2023-03-14
问题内容

我的配置:

  • Windows 7机器
  • Java 7
  • Jenkins 1.511在本地帐户上作为服务运行

我的jenkins.xml文件

<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>

我的hudson.tasks.Mailer.xml文件

<hudson.tasks.Mailer_-DescriptorImpl plugin="mailer@1.4">
  <defaultSuffix>@example.com</defaultSuffix>
  <hudsonUrl>http://localhost:8081/</hudsonUrl>
  <adminAddress>Jenkins Build Server &lt;do-not-reply@example.com&gt;</adminAddress>
  <smtpHost>smtp.example.com</smtpHost>
  <useSsl>false</useSsl>
  <charset>UTF-8</charset>
</hudson.tasks.Mailer_-DescriptorImpl>

注意:“ example.com”代替了我的真实域/电子邮件/ smtp服务器。

当我指示詹金斯发送测试电子邮件时,出现以下错误:

Failed to send out e-mail

javax.mail.MessagingException: Could not connect to SMTP host: smtp.example.com, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect

at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)

at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)

at javax.mail.Service.connect(Service.java:295)

我对此错误的理解是,Windows 7中存在一个错误,该错误由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运行时开始。Jenkins必须产生一个新进程来启动并启动系统Java 7。

使用上述配置,如果我进入Jenkins脚本控制台并使用“ System.getProperty(“
java.net.preferIPv4Stack”)对其进行查询,那么我什么也没得到(未设置)。如果设置了该参数,我仍然会收到错误消息。如果我将-
Djava.net.preferIPv4Stack = true添加到命令行(不使用服务),则在通过脚本控制台进行查询时仍未设置。

我的问题

  1. 为什么会出现此错误以及如何解决?请记住,我可以编写一个ANT脚本,该脚本使用相同的smtp服务器和Java运行时间成功发送电子邮件。

  2. 如何让Jenkins使用-Djava.net.preferIPv4Stack = true参数和指定的运行时间启动?

一些注意事项:

  • 由于公司问题me脚,我无法卸载Java 7。
  • 由于相同的问题,我无法安装Java 6。
  • 我可以安装IBM JDK / JRE。

问题答案:

参数后的-jar参数将传递给应用程序,而不是Java
vm。因此,尝试-Djava.net.preferIPv4Stack=true-jar论点之前 移动 。



 类似资料:
  • 大家好,我正在尝试阅读一个网站的内容与以下代码 但我得到以下错误,我不知道如何解决它。 如果你有什么想法,不要害羞。

  • 问题内容: 很抱歉来到这里问这个问题,但是我已经读完了所有互联网,试图找到解决方案,但是我仍然遇到这个问题… 我已经成功安装了Jenkins(让我在仍有希望的时候开始)可以在我们的持续集成流程中使用它。 我试图从这样一个简单的例子开始: 但是每次启动时,都会出现此错误: 问题在于用户jenkins(服务和主节点以Jenkins的身份运行)拥有此存储库上的所有权限。我试图授予组和其他人读取和执行的权

  • 问题内容: 我正在使用Nginx和Gunicorn配置Django项目。 在Nginx服务器中访问端口时,我的错误日志文件中出现以下错误; 2014/05/30 11:59:42 [crit] 4075#0:* 6 connect()到127.0.0.1:8001在连接到上游时失败(13:权限被拒绝),客户端:127.0.0.1,服务器:localhost,请求:“ GET / HTTP / 1.

  • 我们有一个共同的LDAP帐户/用户。我们计划使用此用户为我们的团队配置 Jenkins。 < li >我使用我的登录名登录到机器/虚拟机并安装了Jenkins。 < li >然后,我仅从我的帐户生成ssh密钥,但我在生成ssh密钥时提供的电子邮件id是普通用户。 < li >然后我将公共ssh密钥添加到Github中(在GitHub中,我使用普通用户登录)。 < li >将私钥添加到Jenkins

  • 我在使用Java编程发送邮件时遇到了这个问题。我从网络团队那里确认,通过Java发送邮件是通过防火墙阻止的。但我可以在windows命令提示符下从telnet获得响应。请查看下面的详细信息。 用于使用Javax mail发送邮件的代码: 使用Telnet,我可以在命令提示符下发送邮件:Telnet mailhost。xxx 25我收到的回复如下: 在谷歌搜索后,我也尝试在Eclipse中设置JVM

  • 问题内容: 我的权限被拒绝,但不知道为什么。从我的詹金斯大师那里,我能够使用ssh-rsa-key运行以下命令 注意: 当我发现从属主机不存在并使其由jenkins用户拥有时,我确实在从属主机上手动创建了/ var / jenkins /。我的主jenkins配置为使用.ssh密钥使用jenkins @ mySlaveHost。 有什么想法为什么我会拒绝权限吗?它想做什么? 这是单击[Lauch