专栏首页stream processLinux下报 java.net.SocketException权限不够 异常解决

Linux下报 java.net.SocketException权限不够 异常解决

转载自:http://wangchongan.com/articles/java-net-socket-exception-permission-denied.html

今天在Linux下用Jetty把一个应用启动起来报权限不够异常。其实原因很简单,但是如果一时疏忽可能会习惯性地google一把,我就google了一把,但是发现网上关于这个问题的内容很少。所以我特记录一下,希望能给遇到同样问题的同学有帮助。

异常内容如下:

HSFJettyWebAppContext replace servlet context get file /tmp/hsf_jetty_placeholder/WEB-INF/common/webx-component-and-root.xml Web Context替换文件到【/tmp/hsf_jetty_placeholder/WEB-INF/common/webx-component.xml】 2012-09-13 20:37:17.930:INFO:/:WebxComponents: initialization completed 2012-09-13 20:37:17.975:INFO:/:Initializing filter: mdc 2012-09-13 20:37:17.976:INFO:/:SetLoggingContextFilter – mdc: initialization completed 2012-09-13 20:37:17.976:INFO:/:Initializing filter: webx 2012-09-13 20:37:17.980:INFO:/:WebxFrameworkFilter – webx: initialization completed 2012-09-13 20:37:18.077:WARN::failed SelectChannelConnector@0.0.0.0:80: java.net.SocketException: 权限不够 2012-09-13 20:37:18.078:INFO::Started Ajp13SocketConnector@0.0.0.0:8009 2012-09-13 20:37:18.079:INFO::AJP13 is not a secure protocol. Please protect port 8009 2012-09-13 20:37:18.079:WARN::failed Server@4950b45a: java.net.SocketException: 权限不够 java.net.SocketException: 权限不够 at sun.nio.ch.Net.bind(Native Method) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59) at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:216) at org.mortbay.jetty.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:315) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.Server.doStart(Server.java:235) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at runjettyrun.Bootstrap.main(Bootstrap.java:259)

【推荐解决办法】

原因其实是因为在linux下,如果使用1024以下的端口则需要root权限,所以因为我当前使用的不是root权限,所以权限不足而无法使用80端口,所以会报权限不够异常。把Jetty的HTTP端口改为非80端口且大于1024的端口,比如8080即可。

在pom.xml中修改端口号。

【其他解决方案】

如果就是要使用80端口访问应用,那么还有办法吗?答案是肯定的,我们可以使用iptables命令解决。

我们可以通过以下命令设置将80端口转发到8080端口,这样eclipse中的jetty插件还是可以绑定在8080端口,/etc/hosts绑定本地到日常的域名也可以通过80端口自动转发,这样就很方便了。

tables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-ports 8080 iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 –dport 80 -j REDIRECT –to-ports 8080

不需要时可以清除掉:

iptables -t nat -F PREROUTING iptables -t nat -F OUTPUT

上述设置是临时的,如果重启后该设置就会失效,如果想让你的配置在重启后仍然有效,可以参考这里

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux下运行maven项目报错“java.net.SocketException: 权限不够”的解决办法

    把项目从Windows迁移到Linux,运行报错:java.net.SocketException: 权限不够

    飞奔去旅行
  • 解决:Unable to open debugger port (127.0.0.1:55017): java.net.SocketException "Socket closed"

    项目以前启动正常,突然报错,启动不起来了,报了个Unable to open debugger port (127.0.0.1:55017): java.net...

    微风-- 轻许--
  • MySQL访问受限的问题分析

    今天帮同事看了一个MySQL的连接问题,蛮有意思,有两个用户,一个用户连接正常,另外一个连接抛错。 开发同学提供的错误日志如下: {resin-33} jav...

    jeanron100
  • Tomcat各种网络异常场景解决方案及优化

    Java Socket网络编程常见的异常有哪些,然后通过一个实验来重现其中的Connection reset异常,并且通过配置Tomcat的参数来解决这个问题。

    JavaEdge
  • java.io.IOException 断开的管道【面试+工作】

    查看采集数据的tomcat日志,习惯性的先翻到日志的最后去查看有没有异常的打印,果然发现了好几种异常信息,但是最多还是这个:

    Java帮帮
  • 困扰我多年的Connection reset问题

    第一次出现:是thrift的python client去请求server,发现偶尔出现这个问题 第二次:接入第三方的api,去请求数据时,发现一个接入方的api...

    财主刀刀
  • 网络编程之socket异常总结

    1.java.net.SocketTimeoutException . 这 个异 常比较常见,socket 超时。 一般有 2 个地方会抛出这个,一个是 con...

    lyb-geek
  • tomcat cluster配置实战注意事项

    关于tomcat cluster的实现原理,详见:https://tomcat.apache.org/tomcat-7.0-doc/cluster-howto....

    编程随笔
  • Centos7.x下Tomcat不能使用80端口的问题小结

    1024以下的端口只能由root用户使用,普通权限的用户没有权限。恰好80端口号小于1024,而8080端口号大于1024。 再检查一下当前用户,恰好非roo...

    程裕强
  • Springboot数据库连接池报错“java.net.SocketException: Broken pipe”的解决办法

    这个异常通常在Linux服务器上会发生,原因是Linux系统会主动断开一个长时间没有通信的连接

    飞奔去旅行
  • socket异常问题

    可能这两种代码看上去区别不大唯一区别就是输入输出流的关闭顺序。而这种顺序不同也会导致出错。

    用户1418372
  • ulimit设置句柄数

    这几天在做一个性能测试,写了一个模拟发送http的程序。模拟100并发的情况下,随机发http get的请求。放到服务器上运行一段时间抛出Too many op...

    小小科
  • LINUX weblogic集群搭建- 03启动脚本的控制

    1.adminServer配置 base_domain/servers/AdminServer下新建文件夹security 同时里面创建一个新的文件boot.p...

    用户1499526
  • linux下vsftpd的安装及配置使用详细步骤(推荐)

    vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。

    砸漏
  • Java之网络编程笔记

      IP地址:用于标记一台计算机的身份证。 IP地址由网络地址(确定网络)和主机地址(网络中的主机)组成。

    shirayner
  • LinkedIn 即时通信系统的优化

    前言 LinkedIn 的即时通信系统目前单台机器可以处理数十万的持久连接,这是不断调优的结果。 最近,他们在官网博客中发布了优化过程,介绍了即时通信系统的技术...

    dys
  • Eclipse Jetty JettyLauncher 问题解决与使用技巧

    Eclipse Jetty JettyLauncher java.net.SocketException: Unrecognized Windows Socke...

    阿敏总司令
  • ReactNative报错记录以及原因分析 ReactNative报错记录

    如果在android studio启动的时候发现无法访问加载js脚本文件,注意用命令 adb shell input keyevent 82 调出手机调式菜单,...

    聚优云惠
  • 干货 | Tomcat类加载机制触发的Too many open files问题分析

    作者简介 宋顺,携程框架研发部技术专家。2016年初加入携程,主要负责中间件产品的相关研发工作。毕业于复旦大学软件工程系,曾就职于大众点评,担任后台系统技术负责...

    携程技术

扫码关注云+社区

领取腾讯云代金券