由于您可能从命令行、ant 或 maven 间接运行 java,这取决于它们的 java、javac 和构建脚本以及其中的变量。Maven 并不复杂;在 Ant 中,如果包含很多内容,您可以回显 java 版本。
要检查 .class 文件,请尝试以下操作。它是 Java 7,但可以轻松转换为早期版本。
private static void dumpJavaClassVersion(String path) throws IOException {
File file = new File(path);
try (InputStream in = new FileInputStream(file)) {
byte[] header = new byte[8];
int nread = in.read(header);
if (nread != header.length) {
System.err.printf("Only %d bytes read%n", nread);
return;
}
if (header[0] != (byte)0xCA || header[1] != (byte)0xFE
|| header[2] != (byte)0xBA || header[3] != (byte)0xBE) {
System.err.printf("Not a .class file (CAFE BABE): %02X%02X %02X%02X",
header[0], header[1], header[2], header[3]);
return;
}
int minorVs = ((header[4] & 0xFF) << 8) | (header[5] & 0xFF);
int majorVs = ((header[4] & 0xFF) << 8) | (header[5] & 0xFF);
final String[] versionsFrom45 = {"1.1", "1.2", "1.3", "1.4", "5", "6", "7", "8", "9", "10"};
int majorIx = majorVs - 45;
String majorRepr = majorIx < 0 || majorIx >= versionsFrom45.length ? "?" : versionsFrom45[majorIx];
System.out.printf("Version %s, internal: minor %d, major %d%n",
majorRepr, minorVs, majorVs);
}
}