Тип gotchas зависит от типа вашего приложения.
Для почти полного списка вы можете запустить эту проверку, в котором перечислены как переменные среды операционной системы и системы Java свойства:
import java.awt.GraphicsEnvironment;
import java.util.Map;
import java.util.Properties;
public class Sof39189179 {
public static void main(String[] args) {
Map<String, String> sysenv = System.getenv();
for(String key: sysenv.keySet())
System.out.println(key + ": " + sysenv.get(key));
Properties properties = System.getProperties();
for(Object key: properties.keySet())
System.out.println(key + ": " + properties.get(key));
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
System.out.println("headless: " + ge.isHeadless());
}
}
На моем компьютере, я получаю следующий вывод (я опустили некоторые строки):
M2: $M2_HOME/bin
JAVA_HOME: /opt/local/jdk-1.8.0_51
LANG: en_US.UTF-8
CATALINA_HOME: /opt/local/tomcat-8.0.24
...
---------------------
java.runtime.name: Java(TM) SE Runtime Environment
sun.boot.library.path: /opt/local/jdk-1.8.0_51/jre/lib/amd64
java.vm.version: 25.51-b03
java.vm.vendor: Oracle Corporation
java.vendor.url: http://java.oracle.com/
path.separator: :
java.vm.name: Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg: sun.io
user.country: US
sun.java.launcher: SUN_STANDARD
sun.os.patch.level: unknown
java.vm.specification.name: Java Virtual Machine Specification
user.dir: /home/rudolf/workspace/neon/sof39189179
java.runtime.version: 1.8.0_51-b16
java.awt.graphicsenv: sun.awt.X11GraphicsEnvironment
java.endorsed.dirs: /opt/local/jdk-1.8.0_51/jre/lib/endorsed
os.arch: amd64
java.io.tmpdir: /tmp
line.separator:
java.vm.specification.vendor: Oracle Corporation
os.name: Linux
...
java.awt.printerjob: sun.print.PSPrinterJob
file.encoding: UTF-8
java.specification.version: 1.8
java.class.path: /home/rudolf/workspace/neon/sof39189179/bin
user.name: rudolf
java.vm.specification.version: 1.8
java.home: /opt/local/jdk-1.8.0_51/jre
sun.arch.data.model: 64
user.language: en
java.specification.vendor: Oracle Corporation
awt.toolkit: sun.awt.X11.XToolkit
java.vm.info: mixed mode
java.version: 1.8.0_51
java.ext.dirs: /opt/local/jdk-1.8.0_51/jre/lib/ext:/usr/java/packages/lib/ext
sun.boot.class.path: /opt/local/jdk-1.8.0_51/jre/lib/resources.jar:/opt/local/jdk-1.8.0_51/jre/lib/rt.jar:/opt/local/jdk-1.8.0_51/jre/lib/sunrsasign.jar:/opt/local/jdk-1.8.0_51/jre/lib/jsse.jar:/opt/local/jdk-1.8.0_51/jre/lib/jce.jar:/opt/local/jdk-1.8.0_51/jre/lib/charsets.jar:/opt/local/jdk-1.8.0_51/jre/lib/jfr.jar:/opt/local/jdk-1.8.0_51/jre/classes
java.vendor: Oracle Corporation
file.separator:/
java.vendor.url.bug: http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding: UnicodeLittle
sun.cpu.endian: little
sun.cpu.isalist:
headless: false
Вы можете определить из этого списка, какие свойства имеют отношение к вашему делу и проверить свой код. Или, лучше, код с этими свойствами.
System.out.printf («% п») использует окончания платформы линии
Я предпочитаю использовать перечисленное выше свойство, то есть для распечатки перевода строки, я использую нечто вроде:
String newline = (String) System.getProperties().get("line.separator");
System.out.println("newline: " + newline);
Вы имеете в виду найти использования внутри набора исходных кодов ? – Kayaman
@ Kayaman Это вариант, но я надеюсь, что какой-то официальный список, открытый командой JDK dev, существует или что-то в этом роде. –
Ну, я никогда не сталкивался с официальным исчерпывающим списком (через ~ 20 лет), так что он оставил бы ответственность опытного разработчика, чтобы знать, что они делают. Я могу представить, что есть некоторые неофициальные короткие списки, но их поиск, вероятно, попадет под «Закрыть> Вне темы> Внешний ресурс». – Kayaman