如果网络连接超时,Java需要很长时间才能运行任何东西

如果网络连接超时,Java需要很长时间才能运行任何东西,java,virtual-machine,openjdk,icedtea,Java,Virtual Machine,Openjdk,Icedtea,我想知道为什么要运行任何程序,Java需要使用网络。由于我与大学无线网络的连接真的很糟糕,我一直在断开连接,但没有接到接入点的任何通知。因此,我无法再访问网络,但操作系统仍会将连接视为已启动。(在我的例子中,我在ArchLinux上使用netctl。) 结果是Java在运行main()方法中的任何代码之前需要等待20秒 如果连接断开,则不会出现此问题(从网络实用程序的角度来看) 您知道Java为什么会这样做,以及如何防止它吗 编辑,因为它看起来不清楚: 如何重现错误: 使用断开的网关,例如240

我想知道为什么要运行任何程序,Java需要使用网络。由于我与大学无线网络的连接真的很糟糕,我一直在断开连接,但没有接到接入点的任何通知。因此,我无法再访问网络,但操作系统仍会将连接视为已启动。(在我的例子中,我在ArchLinux上使用netctl。)

结果是Java在运行main()方法中的任何代码之前需要等待20秒

如果连接断开,则不会出现此问题(从网络实用程序的角度来看)

您知道Java为什么会这样做,以及如何防止它吗

编辑,因为它看起来不清楚:

如何重现错误:

  • 使用断开的网关,例如240.0.0.1
  • 使用空的main()方法编写Java程序
  • 编译(javac)
  • 运行程序
  • 最后一步需要20多秒才能完成


    我想让您解释的不是我为什么会出现网络问题,而是为什么Java会受到影响?

    问题确实是由库造成的,因为空的类路径解决了这个问题


    更新:正如你所知,图书馆不在网络上,而是向网络发出请求。这个图书馆是JR.

    对不起,有很多问题,因为我认为它们不是直接相关的。您是如何确定Java停止的?程序是否有响应?您的程序是否与网络相关?您的计算机上的其他操作是否顺利进行?如果您添加尝试运行的代码,这将对我们有所帮助。您的类路径是否指向网络上的任何内容?正如@user1676075所指出的,您的类路径中可能有网络路径上的内容。Java本身并不使用网络。