程序包javax.jws不存在_关于macOS Catalina WiFi Captive portal不弹窗问题的解决方案

当初被Catalina能够和pad共享屏幕所吸引,所以Catalina刚发布就更新了。然而更新以后发现连不上学校的网了,只能连edu。被这个问题困扰了很久,尝试了网上能找到的方法也还是没有解决,更新了两次系统这个问题也还是存在。今天终于找到了解决方案,所以想搬运过来,希望能够对碰到这个问题的人有些帮助。

https://poweruser.blog/macos-catalina-wifi-issue-captive-portal-broken-45610cc016b5

为了方便大家,顺手翻译一下。

升级到macOS Catalina可能会中断与带有强制门户的WiFi网络的连接。这是一种解决方法。

7a40e1df59090146dffc5d8d9f792cea.png
Icon made by Freepik from www.flaticon.com

macOS Catalina的初始版本有漏洞的声誉。在我的Macbook上升级到macOS 10.15时* Catalina断开了连接到任何需要通过强制门户进行确认或登录的WiFi网络的功能(如今,从星巴克到机场,几乎所有公共热点都是这种情况)。

*(精确到最新PATCHLEVEL截至记者发稿:10.15.0与从10月15日- 2019补充更新。10.15.1还没有出来**)。

**(更新10月31日- 2019:10.15.1更新已经被释放,但-至少在我的机器上-在安装它并没有。解决这个问题我还需要使用下面的解决方法)。

问题

当连接到具有强制门户功能的WiFi网络(用户必须先登录或确认使用条款才能访问Internet的网页)时,我注意到以下行为:

  • 实际的WiFi连接有效(WiFi状态显示为已连接,并且ifconfignetstat -nr通过DHCP正确设置了WiFi接口上的IP和默认网关)

然而:

  • 无法访问强制门户来解锁Internet:没有出现通常的macOS强制门户检测弹出窗口(浏览器中也没有强制门户)
  • 所有DNS名称都是无法解析的(nslookup-> server表示DNS服务器设置为localhost而不是DHCP中的一个)
  • 本地子网外部的流量未路由。A ping 8.8.8.8会导致no route to host错误消息(即使netstat -nr显示正确设置的默认网关,也可以ping通)。

故障排除

有趣的是,每次尝试连接时,此错误消息都会出现在日志中(使用控制台应用程序):

Non-fatal error enumerating at <private>, continuing: Error Domain=NSCocoaErrorDomain Code=260 "The file “PlugIns” couldn’t be opened because there is no such file." UserInfo={NSURL=PlugIns/ -- file:///System/Library/CoreServices/Captive%20Network%20Assistant.app/Contents/, NSFilePath=/System/Library/CoreServices/Captive Network Assistant.app/Contents/PlugIns, NSUnderlyingError=0x7fbd655325e0 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

实际上,PluginInsin /System/Library/CoreServices/Captive Network Assistant.app/Contents中的子文件夹不存在。我尝试创建文件夹(由于macOS系统分区是只读的,因此需要在恢复模式下完成)。这使错误消息消失了,但是并没有解决问题。显然,该文件夹中的所有内容也将丢失。

但是,我注意到可以Captive Network Assistants通过上述路径手动打开应用程序(通过在Finder中双击应用程序包)。连接到门户网站锁定的WiFi网络后,它会执行预期的操作:它显示了门户网站侦测弹出窗口。登录到强制门户后,上述网络限制消失,一切正常。

解决方法的想法

我们可以安装LaunchDaemon来监视WiFi网络的更改,并在发生此类事件时启动Captive Network Assistants应用程序。

我们可以通过该文件掌握WiFi网络的任何更改/Library/Preferences/SystemConfiguration/com.apple.airport.preferences。操作系统似乎会使用当前使用的无线电频道定期更新此文件。

LaunchDaemon可以将WatchPaths声明作为事件触发器。可以监视文件和文件夹的更改。观看文件时,相应的文件可能永远不会删除-否则“观看”会自动结束。不幸的是,此文件是这种情况(它似乎没有被覆盖,但已删除并重新创建),这就是为什么我们必须监视父文件夹(可以的,即使它可能更贵)也是如此。

解决方案

安装

首先,我们创建一个文件,my.shim.catalina.captivenetworkassistant.plist在其中定义新的LaunchDaemon:

(此文件可以放置在任何地方,但是一个好的位置是~/Library/LaunchDaemons/-我们可能需要创建该文件夹)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
 <dict>
  <key>Label</key>
  <string>my.shim.catalina.captivenetworkassistant.plist</string>
  <key>LowPriorityIO</key>
  <true/>
  <key>ProgramArguments</key>
  <array>
   <string>open</string>
   <string>/System/Library/CoreServices/Captive Network Assistant.app</string>
  </array>
  <key>WatchPaths</key>
  <array>
   <string>/Library/Preferences/SystemConfiguration</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
 </dict>
</plist>

然后,我们从以下文件安装并启动LaunchDaemon:

launchctl load my.shim.catalina.captivenetworkassistant.plist
launchctl start my.shim.catalina.captivenetworkassistant

(注意:LaunchDaemon是按用户安装的。以上内容应以交互式登录的用户身份执行-而不是sudo / as root

测试中

我们可以通过连接到任何启用了强制门户的WiFi进行测试。强制门户弹出窗口应自动出现,类似于以前在macOS版本上的弹出窗口。

740158b159bcbba23298e959b12d2816.png
the Captive Portal popup window

卸载

我非常确定,此错误将在以后的macOS更新中得到修复。在这种情况下,我们可以通过以下方式删除我们的LaunchDaemon:

launchctl stop my.shim.catalina.captivenetworkassistant
launchctl unload my.shim.catalina.captivenetworkassistant.plist
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值