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

设置JVM / JRE以自动使用Windows代理

吕德惠
2023-03-14
问题内容

我确实看到了有关为JVM设置代理的问题,但我想问的是人们如何利用已经配置的代理(在Windows上)。

这是我的问题的演示:

  1. 转到控制面板-> Java并设置代理地址。
  2. 运行以下简单的小程序代码(我正在使用Eclipse IDE):
import java.awt.Graphics;
import javax.swing.JApplet;
import java.util.*;

public class Stacklet extends JApplet {
    private String message;
    public void init(){
        Properties props = System.getProperties();
        message = props.getProperty("http.proxyHost", "NONE");      
        message = (message.length() == 0)? "NONE": message;
    }

    public void paint(Graphics g)
    {
        g.drawString(message, 20, 20);
    }
}

无论您在Java控制面板中进行的设置如何,Applet均显示“无”。如果可以确定Windows代理设置(通常在Internet Explorer中设置),那将是最好的选择,但是在Java控制面板中进行额外的配置步骤仍然是可以接受的解决方案。

谢谢!


问题答案:

可以使用ProxySelector类检测代理,并通过使用System类的setProperty方法分配环境变量来分配系统代理:

System.setProperty("java.net.useSystemProxies", "true");
System.out.println("detecting proxies");
List l = null;
try {
    l = ProxySelector.getDefault().select(new URI("http://foo/bar"));
} 
catch (URISyntaxException e) {
    e.printStackTrace();
}
if (l != null) {
    for (Iterator iter = l.iterator(); iter.hasNext();) {
        java.net.Proxy proxy = (java.net.Proxy) iter.next();
        System.out.println("proxy type: " + proxy.type());

        InetSocketAddress addr = (InetSocketAddress) proxy.address();

        if (addr == null) {
            System.out.println("No Proxy");
        } else {
            System.out.println("proxy hostname: " + addr.getHostName());
            System.setProperty("http.proxyHost", addr.getHostName());
            System.out.println("proxy port: " + addr.getPort());
            System.setProperty("http.proxyPort", Integer.toString(addr.getPort()));
        }
    }
}


 类似资料:
  • 问题内容: 很多时候,Java应用程序需要连接到Internet。最常见的示例是在读取XML文件并需要下载其架构时发生的。 我在代理服务器后面。如何设置我的JVM使用代理? 问题答案: 从Java文档(不是 javadoc API)中: http://download.oracle.com/javase/6/docs/technotes/guides/net/proxies.html 设置JVM标

  • 我已经下载并提取了Eclipse。我在以下目录中有Eclipse:C:\Applications\Eclipse。当我尝试运行可执行文件时,我收到以下消息: 我目前有以下文件夹: 我是否需要为我的Windows 7操作系统设置一些环境变量来运行Eclipse?如果是,我可以得到一些帮助吗?如果不是,我可以得到一些帮助来运行Eclipse。 编辑 我已更改快捷方式以包含虚拟机的路径,现在收到此错误:

  • 问题内容: 我需要自动检测用户是否需要代理才能访问互联网。Java应用程序是否可以读取系统代理设置? 谢谢,吉米 问题答案: Java SE 1.5提供了ProxySelector类来检测代理设置。如果存在与Internet的直接连接,则代理类型将为DIRECT,否则它将返回主机和端口。 下面的示例说明了此功能:

  • 问题内容: 我试图在Eclipse中更新我的jre版本,我将jre 8添加到了已安装的JRE中,并选中了他。当我单击确定时,它给我一个错误: 它仅在我尝试使用JRE 8时发生。 有人知道如何解决这个问题吗? 我使用Indigo Eclipse。版本:Service Release 2。 问题答案: 创建新的工作区。创建新的Java项目,然后选择jvm8作为jvm。在现有项目中更改虚拟机非常困难,并

  • 问题内容: 可以在调用“ java jar jar_name.jar”时指定要使用的JVM。我的机器上安装了两个JVM。我无法更改JAVA_HOME,因为它可能会破坏所有准备就绪的代码。 亲切的问候 史提芬 问题答案: 是的-仅显式提供java.exe的路径。例如: 对于正在运行的命令外壳,最简单的方法是: 例如,这是一个完整的会话,显示我的默认JVM,然后是路径的更改,然后是新的: 但是,这不会