在Java注释处理器中获取环境变量

时间:2012-11-05 16:22:01

标签: java annotations websocket environment-variables javac

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

1 个答案:

答案 0 :(得分:0)

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