【问题标题】:Getting an environment variable in a Java annotation processor在 Java 注释处理器中获取环境变量
【发布时间】:2012-10-25 12:36:29
【问题描述】:

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

【问题讨论】:

  • 您可以在命令行中使用 -D 标志来覆盖系统属性。但我怀疑这不是您要寻找的答案...
  • @durron597 不幸的是,它不适用于 Javac。

标签: java annotations websocket environment-variables javac


【解决方案1】:

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

【讨论】:

  • 现在在我工作的电脑后面,一旦我的谷歌连接在家,就会插入链接。寻找答案,复活死者……
猜你喜欢
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多