Changeset 6ff9483


Ignore:
Timestamp:
Oct 29, 2016 4:21:02 PM (4 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
9e8251f
Parents:
484a390
Message:

Console: Java 9 fixes for classloader (ticket #1870)
May not be sufficient for plugins
Unlinkify viewmtn links on /jars, site is down

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • apps/routerconsole/java/src/net/i2p/router/web/FileDumpHelper.java

    r484a390 r6ff9483  
    3434
    3535        // jars added in wrapper.config
    36         URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
    37         URL[] urls = urlClassLoader.getURLs();
    38         List<File> flist = new ArrayList<File>();
    39         for (int i = 0; i < urls.length; i++) {
    40             String p = urls[i].toString();
    41             if (p.startsWith("file:") && p.endsWith(".jar")) {
    42                 p = p.substring(5);
    43                 if (!(p.startsWith(_context.getBaseDir().getAbsolutePath()) ||
    44                       p.startsWith(_context.getConfigDir().getAbsolutePath()))) {
    45                     flist.add(new File(p));
     36        ClassLoader loader = ClassLoader.getSystemClassLoader();
     37        if (loader instanceof URLClassLoader) {
     38            // through Java 8, not available in Java 9
     39            URLClassLoader urlClassLoader = (URLClassLoader) loader;
     40            URL[] urls = urlClassLoader.getURLs();
     41            List<File> flist = new ArrayList<File>();
     42            for (int i = 0; i < urls.length; i++) {
     43                String p = urls[i].toString();
     44                if (p.startsWith("file:") && p.endsWith(".jar")) {
     45                    p = p.substring(5);
     46                    if (!(p.startsWith(_context.getBaseDir().getAbsolutePath()) ||
     47                          p.startsWith(_context.getConfigDir().getAbsolutePath()))) {
     48                        flist.add(new File(p));
     49                    }
    4650                }
    4751            }
    48         }
    49         Collections.sort(flist);
    50         for (File f : flist) {
    51             dumpFile(buf, f);
     52            Collections.sort(flist);
     53            for (File f : flist) {
     54                dumpFile(buf, f);
     55            }
    5256        }
    5357
     
    124128            if (iv != null)
    125129                buf.append("<br>");
    126             buf.append("<a href=\"http://killyourtv.i2p/viewmtn/revision/info/").append(s)
    127                .append("\">" +
    128                        "<tt>").append(s.substring(0, 20)).append("</tt>" +
     130            // fix and uncomment if a reliable viewmtn host appears
     131            //buf.append("<a href=\"http://killyourtv.i2p/viewmtn/revision/info/").append(s)
     132            //   .append("\">");
     133            buf.append("<tt>").append(s.substring(0, 20)).append("</tt>" +
    129134                       "<br>" +
    130                        "<tt>").append(s.substring(20)).append("</tt></a>");
     135                       "<tt>").append(s.substring(20)).append("</tt>");
     136            //buf.append("</tt>");
    131137        }
    132138        buf.append("</td><td>");
  • apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java

    r484a390 r6ff9483  
    435435                        try {
    436436                            addPath(f.toURI().toURL());
    437                             log.error("INFO: Adding translation plugin to classpath: " + f);
     437                            log.info("INFO: Adding translation plugin to classpath: " + f);
    438438                            added = true;
     439                        } catch (ClassCastException e) {
     440                            log.logAlways(Log.WARN, "Java version: " + System.getProperty("java.version") +
     441                                                    " does not support adding classpath element: " + f +
     442                                                    " for plugin " + appName);
    439443                        } catch (RuntimeException e) {
    440444                            log.error("Plugin " + appName + " bad classpath element: " + f, e);
     
    988992    /**
    989993     *  http://jimlife.wordpress.com/2007/12/19/java-adding-new-classpath-at-runtime/
     994     *
     995     *  @throws ClassCastException in Java 9
    990996     */
    991997    private static void addPath(URL u) throws Exception {
  • apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java

    r484a390 r6ff9483  
    111111        StringTokenizer tok = new StringTokenizer(cp, " ,");
    112112        StringBuilder buf = new StringBuilder();
    113         Set<URI> systemCP = getSystemClassPath();
     113        Set<URI> systemCP = getSystemClassPath(i2pContext);
    114114        while (tok.hasMoreTokens()) {
    115115            if (buf.length() > 0)
     
    160160     * @since 0.9
    161161     */
    162     private static Set<URI> getSystemClassPath() {
    163         URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
    164         URL urls[] = urlClassLoader.getURLs();
     162    private static Set<URI> getSystemClassPath(I2PAppContext ctx) {
    165163        Set<URI> rv = new HashSet<URI>(32);
    166         for (int i = 0; i < urls.length; i++) {
    167             try {
    168                 rv.add(urls[i].toURI());
    169             } catch (URISyntaxException use) {}
     164        ClassLoader loader = ClassLoader.getSystemClassLoader();
     165        if (loader instanceof URLClassLoader) {
     166            // through Java 8, not available in Java 9
     167            URLClassLoader urlClassLoader = (URLClassLoader) loader;
     168            URL urls[] = urlClassLoader.getURLs();
     169            for (int i = 0; i < urls.length; i++) {
     170                try {
     171                    rv.add(urls[i].toURI());
     172                } catch (URISyntaxException use) {}
     173            }
     174        } else {
     175            // Java 9 - assume everything in lib/ is in the classpath
     176            File libDir = new File(ctx.getBaseDir(), "lib");
     177            File[] files = libDir.listFiles();
     178            if (files != null) {
     179                for (int i = 0; i < files.length; i++) {
     180                    if (files[i].getName().endsWith(".jar"))
     181                        rv.add(files[i].toURI());
     182                }
     183            }
    170184        }
    171185        return rv;
  • history.txt

    r484a390 r6ff9483  
     12016-10-29 zzz
     2 * Console: Java 9 fixes for classloader (ticket #1870)
     3
     42016-10-28 zzz
     5 * Build: Fix typo in jcpuid build.sh for Mac (ticket #1865)
     6 * Crypto:
     7   - Generate more-conforming selfsigned certs (ticket #1853)
     8   - Remove deprecated Sha256Standalone as scheduled
     9 * Utils:
     10   - Fix Java version detection for Java 9 (ticket #1870)
     11   - Add Addresses methods for multiple DNS results (ticket #1050)
     12
    1132016-10-26 zzz
    214 * Build: Mac jbigi/jcpuid improvements and docs (ticket #1865)
  • router/java/src/net/i2p/router/RouterVersion.java

    r484a390 r6ff9483  
    1919    public final static String ID = "Monotone";
    2020    public final static String VERSION = CoreVersion.VERSION;
    21     public final static long BUILD = 5;
     21    public final static long BUILD = 6;
    2222
    2323    /** for example "-test" */
Note: See TracChangeset for help on using the changeset viewer.