我想使用一个Java应用程序,它不是由我编写的,也不再维护,这意味着我不能只是去找作者并要求一个新功能。我有什么选择来添加代理功能。是否可以添加一些shell参数?将代理的二进制代码直接添加到.class
文件中是否可行?我可以编写自己的类,从.class
文件中导入内容并覆盖网络功能吗?
答案 0 :(得分:2)
这可能对您有用:
java -Dhttp.proxyHost=IP_address -Dhttp.proxyPort=8080 -jar App.jar
答案 1 :(得分:2)
可以通过创建具有相同名称/包的类并将其放在类路径中以使其优先,从而将类替换为您自己的实现。但是,如果代码的其他部分使用此类,则无法破坏二进制兼容性。
还有一些检测API可用于在加载类时对其进行修改。请参阅Instrumentation API。
答案 2 :(得分:0)
如果您要创建引用已编译的.class
的源文件,那么请在您的文件中尝试执行此操作:
java.util.Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost", PROXY_HOST);
systemProperties.setProperty("http.proxyPort", PROXY_PORT);
我认为这应该有用。