1

我正在尝试在 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?甚至以编程方式设置它们,尽管我怀疑这是邪恶的。

4

1 回答 1

0

Java 工具集现在包含在 Java 的运行时中。如果您想使用 设置 Java 变量-D,您所要做的就是从您自己的应用程序中调用这些工具。然后,您可以传递-Dmy.variable="hello world"java而不是javac.

于 2014-04-02T09:00:29.697 回答