Notes and logging re: compiling with Java 8

This commit is contained in:
zzz
2014-07-31 14:42:51 +00:00
parent 5332cee3e8
commit 370d2555c7
2 changed files with 41 additions and 1 deletions

View File

@ -46,6 +46,27 @@ javac.version=1.6
# This one keeps gcj a lot quieter
#javac.compilerargs=-warn:-unchecked,raw,unused,serial
#
# Note to packagers, embedders, distributors:
#
# Strictly speaking, you must either use the compiler for the minimum Java version you are
# targeting (default 1.6, see above), or specify a bootclasspath, which means you need
# the JRE for the target version installed as well.
#
# However, in practice, you can compile with 1.7 and target 1.6 without specifying a bootclasspath,
# and it all works fine.
#
# But you cannot compile with 1.8 and target 1.6 or 1.7 without bootclasspath,
# or your users will get runtime errors.
# Below is an example of a bootclasspath that works on Ubuntu.
#
# For more info:
# http://zzz.i2p/topics/1668
# https://gist.github.com/AlainODea/1375759b8720a3f9f094
#
#javac.compilerargs=-bootclasspath /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jce.jar
### UnitTests ##
# Location of the libraries required for the ScalaTest tests.
# Define this in override.properties or pass in on the command line.

View File

@ -285,6 +285,26 @@ class BuildExecutor implements Runnable {
public void run() {
_isRunning = true;
try {
run2();
} catch (NoSuchMethodError nsme) {
// http://zzz.i2p/topics/1668
// https://gist.github.com/AlainODea/1375759b8720a3f9f094
// at ObjectCounter.objects()
String s = "Fatal error:" +
"\nJava 8 compiler used with JRE version " + System.getProperty("java.version") +
" and no bootclasspath specified." +
"\nUpdate to Java 8 or contact packager." +
"\nStop I2P now, it will not build tunnels.";
_log.log(Log.CRIT, s, nsme);
System.out.println(s);
throw nsme;
} finally {
_isRunning = false;
}
}
private void run2() {
List<TunnelPool> wanted = new ArrayList<TunnelPool>(MAX_CONCURRENT_BUILDS);
List<TunnelPool> pools = new ArrayList<TunnelPool>(8);
@ -423,7 +443,6 @@ class BuildExecutor implements Runnable {
if (_log.shouldLog(Log.WARN))
_log.warn("Done building");
_isRunning = false;
}
/**