();
+ for (int i = 0; i < urls.length; i++) {
+ String p = urls[i].toString();
+ if (p.startsWith("file:") && p.endsWith(".jar")) {
+ p = p.substring(5);
+ if (!(p.startsWith(_context.getBaseDir().getAbsolutePath()) ||
+ p.startsWith(_context.getConfigDir().getAbsolutePath()))) {
+ flist.add(new File(p));
+ }
}
}
- }
- Collections.sort(flist);
- for (File f : flist) {
- dumpFile(buf, f);
+ Collections.sort(flist);
+ for (File f : flist) {
+ dumpFile(buf, f);
+ }
}
// our jars
@@ -123,11 +127,13 @@ public class FileDumpHelper extends HelperBase {
if (s != null && s.length() > 20) {
if (iv != null)
buf.append("
");
- buf.append("" +
- "").append(s.substring(0, 20)).append("" +
+ // fix and uncomment if a reliable viewmtn host appears
+ //buf.append("");
+ buf.append("").append(s.substring(0, 20)).append("" +
"
" +
- "").append(s.substring(20)).append("");
+ "").append(s.substring(20)).append("");
+ //buf.append("");
}
buf.append("");
s = getAtt(att, "Created-By");
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java
index 4caffa3c2..3420d6075 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java
@@ -434,8 +434,12 @@ public class PluginStarter implements Runnable {
if (f.getName().endsWith(".jar")) {
try {
addPath(f.toURI().toURL());
- log.error("INFO: Adding translation plugin to classpath: " + f);
+ log.info("INFO: Adding translation plugin to classpath: " + f);
added = true;
+ } catch (ClassCastException e) {
+ log.logAlways(Log.WARN, "Java version: " + System.getProperty("java.version") +
+ " does not support adding classpath element: " + f +
+ " for plugin " + appName);
} catch (RuntimeException e) {
log.error("Plugin " + appName + " bad classpath element: " + f, e);
}
@@ -987,6 +991,8 @@ public class PluginStarter implements Runnable {
/**
* http://jimlife.wordpress.com/2007/12/19/java-adding-new-classpath-at-runtime/
+ *
+ * @throws ClassCastException in Java 9
*/
private static void addPath(URL u) throws Exception {
URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java
index 440c61c03..a14f8cd9d 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java
@@ -110,7 +110,7 @@ public class WebAppConfiguration implements Configuration {
return;
StringTokenizer tok = new StringTokenizer(cp, " ,");
StringBuilder buf = new StringBuilder();
- Set systemCP = getSystemClassPath();
+ Set systemCP = getSystemClassPath(i2pContext);
while (tok.hasMoreTokens()) {
if (buf.length() > 0)
buf.append(',');
@@ -159,14 +159,28 @@ public class WebAppConfiguration implements Configuration {
* but keep findbugs happy.
* @since 0.9
*/
- private static Set getSystemClassPath() {
- URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
- URL urls[] = urlClassLoader.getURLs();
+ private static Set getSystemClassPath(I2PAppContext ctx) {
Set rv = new HashSet(32);
- for (int i = 0; i < urls.length; i++) {
- try {
- rv.add(urls[i].toURI());
- } catch (URISyntaxException use) {}
+ ClassLoader loader = ClassLoader.getSystemClassLoader();
+ if (loader instanceof URLClassLoader) {
+ // through Java 8, not available in Java 9
+ URLClassLoader urlClassLoader = (URLClassLoader) loader;
+ URL urls[] = urlClassLoader.getURLs();
+ for (int i = 0; i < urls.length; i++) {
+ try {
+ rv.add(urls[i].toURI());
+ } catch (URISyntaxException use) {}
+ }
+ } else {
+ // Java 9 - assume everything in lib/ is in the classpath
+ File libDir = new File(ctx.getBaseDir(), "lib");
+ File[] files = libDir.listFiles();
+ if (files != null) {
+ for (int i = 0; i < files.length; i++) {
+ if (files[i].getName().endsWith(".jar"))
+ rv.add(files[i].toURI());
+ }
+ }
}
return rv;
}
diff --git a/history.txt b/history.txt
index 96bea6cf7..0c3a302a7 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,15 @@
+2016-10-29 zzz
+ * Console: Java 9 fixes for classloader (ticket #1870)
+
+2016-10-28 zzz
+ * Build: Fix typo in jcpuid build.sh for Mac (ticket #1865)
+ * Crypto:
+ - Generate more-conforming selfsigned certs (ticket #1853)
+ - Remove deprecated Sha256Standalone as scheduled
+ * Utils:
+ - Fix Java version detection for Java 9 (ticket #1870)
+ - Add Addresses methods for multiple DNS results (ticket #1050)
+
2016-10-26 zzz
* Build: Mac jbigi/jcpuid improvements and docs (ticket #1865)
* JRobin 1.6.0-1
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index 4e28a2c8d..c10128fe6 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
- public final static long BUILD = 5;
+ public final static long BUILD = 6;
/** for example "-test" */
public final static String EXTRA = "";
|