我试图在Windows上的注释处理器中打开一个http套接字,并得到以下堆栈跟踪:
java.net.SocketException: Unrecognized Windows Sockets error: 10106: create
at java.net.Socket.createImpl(Socket.java:397)
at java.net.Socket.connect(Socket.java:527)
at java.net.Socket.connect(Socket.java:478)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
...
我已经调查了一点错误,看起来可能是因为注释处理器(通过javac运行)无法访问环境变量,例如SystemRoot。我通过从我的注释处理器调用System.getenv("SystemRoot")
来测试它并返回null。在普通代码中,它按预期返回C:\Windows
。
有没有办法将环境变量传递给javac?或者甚至以编程方式设置它们,尽管我怀疑它是邪恶的。
答案 0 :(得分:0)
Java工具集现在包含在Java的运行时中。如果要使用-D
设置Java变量,您只需从您自己的应用程序中调用工具即可。然后,您可以将-Dmy.variable="hello world"
传递给java
,而不是javac
。