Java 是否可以在不更改代码的情况下向网络应用程序添加代理?

Java 是否可以在不更改代码的情况下向网络应用程序添加代理?,java,proxy,Java,Proxy,我想使用一个Java应用程序,它不是我自己编写的,也不再维护,这意味着我不能直接去找作者要求一个新功能。我必须添加哪些代理能力选项。可以添加一些shell参数吗?将代理的二进制代码直接添加到.class文件中是否易于管理?我是否可以编写自己的类,从.class文件导入内容并覆盖网络功能?这可能适合您: java -Dhttp.proxyHost=IP_address -Dhttp.proxyPort=8080 -jar App.jar 这可能适合您: java -Dhttp.proxyHost

我想使用一个Java应用程序,它不是我自己编写的,也不再维护,这意味着我不能直接去找作者要求一个新功能。我必须添加哪些代理能力选项。可以添加一些shell参数吗?将代理的二进制代码直接添加到
.class
文件中是否易于管理?我是否可以编写自己的类,从
.class
文件导入内容并覆盖网络功能?

这可能适合您:

java -Dhttp.proxyHost=IP_address -Dhttp.proxyPort=8080 -jar App.jar

这可能适合您:

java -Dhttp.proxyHost=IP_address -Dhttp.proxyPort=8080 -jar App.jar

通过创建一个具有相同名称/包的类并将其放在类路径的前面以使其优先,可以用您自己的实现替换一个类。但是,如果该类被代码的其他部分使用,则不能破坏二进制兼容性


还有一些工具API可用于在类加载时修改类。请参阅。

通过创建具有相同名称/包的类并将其较早地放置在类路径中以使其优先,可以使用您自己的实现替换类。但是,如果该类被代码的其他部分使用,则不能破坏二进制兼容性


还有一些工具API可用于在类加载时修改类。请参阅。

如果您正在创建引用已编译的
.class
的自己的源文件,请在文件中尝试执行以下操作:

java.util.Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost", PROXY_HOST);
systemProperties.setProperty("http.proxyPort", PROXY_PORT);

我认为这应该行得通。

如果您正在创建引用已编译的
.class
的自己的源文件,那么在您的文件中尝试执行以下操作:

java.util.Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost", PROXY_HOST);
systemProperties.setProperty("http.proxyPort", PROXY_PORT);

我认为这应该行得通。

有很多Java反编译器。但我不知道这有多合法,如果作者同意的话。是的,有打字错误。不要忘记https代理配置是独立的,有很多Java反编译器。但我不知道这有多合法,如果作者同意的话。是的,有打字错误。不要忘记https代理配置是独立的。我接受了最简单的解决方案。不过,你的书也很有趣!我接受了最简单的解决方案。不过,你的书也很有趣!请解释一下否决票?我在类似的情况下也使用过这个,它对我很有效。请解释一下否决票?我曾在类似的情况下使用过它,它对我很有效。