使用Java 11时,JDK_JAVA_OPTIONS和JAVA_TOOL_OPTIONS之间的确切区别是什么?
它们似乎执行相同的操作,但是输出略有不同。这使我相信他们可能有不同的用例:
$ JDK_JAVA_OPTIONS="-Dstuff" java Foo
NOTE: Picked up JDK_JAVA_OPTIONS: -Dstuff
$ JDK_JAVA_OPTIONS="illegalStuff" java Foo
NOTE: Picked up JDK_JAVA_OPTIONS: illegalStuff
Error: Cannot specify main class in environment variable JDK_JAVA_OPTIONS
$ JAVA_TOOL_OPTIONS="-Dstuff" java Foo
Picked up JAVA_TOOL_OPTIONS: -Dstuff
$ JAVA_TOOL_OPTIONS="illegalStuff" java Foo
Picked up JAVA_TOOL_OPTIONS: illegalStuff
Unrecognized option: illegalStuff
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)
我正在使用一个很小的测试程序:
public class Yo {
public static final void main(String[] …Run Code Online (Sandbox Code Playgroud) 在CircleCI上为v0.59.x构建应用程序时,出现以下错误(以前一直可以正常工作到v0.57.8):
[12:45:19]: ? Note: Some input files use or override a deprecated API.
[12:45:19]: ? Note: Recompile with -Xlint:deprecation for details.
[12:45:19]: ? > Task :react-native-svg:processReleaseJavaRes NO-SOURCE
[12:45:19]: ? > Task :react-native-svg:transformClassesAndResourcesWithPrepareIntermediateJarsForRelease
[12:45:19]: ? > Task :app:javaPreCompileQa
[12:45:44]: ? > Task :app:bundleQaJsAndAssets
[12:45:44]: ? warning: the transform cache was reset.
[12:46:00]: ? Loading dependency graph, done.
[12:46:19]: ? > Task :app:bundleQaJsAndAssets FAILED
[12:46:19]: ? FAILURE: Build failed with an exception.
[12:46:19]: ? * What went wrong:
[12:46:19]: ? Execution failed …Run Code Online (Sandbox Code Playgroud) 我编写了以下程序:
import sun.security.action.GetPropertyAction;
import java.security.AccessController;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class Main {
public static void main(String[] args) {
System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss Z").format(new Date()));
System.out.println(TimeZone.getDefault().getDisplayName());
String country =AccessController.doPrivileged(new GetPropertyAction("user.country"));
System.out.println(country);
String javaHome=AccessController.doPrivileged(new GetPropertyAction("java.home"));
System.out.println(javaHome);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我在计算机上设置了GMT + 3欧洲/明斯克时区。
如果我使用最新版本的JDK6运行该程序,则会看到它显示我的Java时区是委内瑞拉标准时间GMT + 4.30如果我在最新的JDK7版本上运行它,则它将显示巴西时区GMT-3,如果我运行它在最新的JDK8版本上,它向我显示了莫斯科时间GMT + 3。如果我在Win7计算机上选择了Volgograd GMT + 3时区,则该程序在所有Java版本中均可正常运行。那么这是Minsk时区的JDK中的错误吗?
我需要更改java在Windows 2008 Server计算机上使用的默认语言环境.Java是作为Oracle + Application服务器设置的一部分安装的.我可以在代码中执行此操作,但我需要永久更改此设置.
编辑:我应该注意,我们正在讨论通过应用程序服务器提供的jsp页面,因此我无法将命令行参数完全传递给java.机器的区域和语言选项已经设置为我需要的(希腊语).Java的默认语言环境仍然是en_US而不是el_GR.
编辑和解决方案:我正在将现有应用移植到新服务器.该应用程序将默认语言环境视为理所当然,这在新服务器上运行得不是很好(它可以在我的机器上工作).我希望不必触及代码本身,但最终决定在所有页面已包含的文件中明确设置in-code中的默认语言环境.不是最优雅的解决方案,但是,它确实有效.