Rather than piggybacking on first alert call, use the fact that the server and FX Web View are in the same VM and notify the view that bck2brwsr.js is about to be served from the server.
2 * Back 2 Browser Bytecode Translator
3 * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 2 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. Look for COPYING file in the top folder.
16 * If not, see http://opensource.org/licenses/GPL-2.0.
18 package org.apidesign.bck2brwsr.launcher.impl;
20 import java.util.TooManyListenersException;
21 import javafx.beans.value.ChangeListener;
25 * @author Jaroslav Tulach <jtulach@netbeans.org>
27 public final class JVMBridge {
28 private static ClassLoader[] ldrs;
29 private static ChangeListener<Void> onBck2BrwsrLoad;
31 public static void registerClassLoaders(ClassLoader[] loaders) {
32 ldrs = loaders.clone();
35 public static void addBck2BrwsrLoad(ChangeListener<Void> l) throws TooManyListenersException {
36 if (onBck2BrwsrLoad != null) {
37 throw new TooManyListenersException();
42 public static void onBck2BrwsrLoad() {
43 ChangeListener<Void> l = onBck2BrwsrLoad;
45 l.changed(null, null, null);
49 public Class<?> loadClass(String name) throws ClassNotFoundException {
50 System.err.println("trying to load " + name);
51 ClassNotFoundException ex = null;
52 if (ldrs != null) for (ClassLoader l : ldrs) {
54 return Class.forName(name, true, l);
55 } catch (ClassNotFoundException ex2) {
60 ex = new ClassNotFoundException("No loaders");