Skip to content

Commit 49bc115

Browse files
author
zhourenjian
committed
Fixed a ClassLoader bug that SWT Java2Script Application's *.*#main is not executed.
Packed some lately added/modified classes into *.z.js
1 parent 8443a60 commit 49bc115

File tree

3 files changed

+24
-9
lines changed

3 files changed

+24
-9
lines changed

sources/net.sf.j2s.java.core/src/java/lang/Class.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,6 +1695,11 @@ Clazz.declarePackage ("java.util");
16951695
/*
16961696
* Consider these interfaces are basic!
16971697
*/
1698+
Clazz.declareInterface (java.io,"Closeable");
1699+
Clazz.declareInterface (java.io,"DataInput");
1700+
Clazz.declareInterface (java.io,"DataOutput");
1701+
Clazz.declareInterface (java.io,"Externalizable");
1702+
Clazz.declareInterface (java.io,"Flushable");
16981703
Clazz.declareInterface (java.io,"Serializable");
16991704
Clazz.declareInterface (java.lang,"Iterable");
17001705
Clazz.declareInterface (java.lang,"CharSequence");

sources/net.sf.j2s.java.core/src/java/lang/ClassLoader.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,7 +1162,7 @@ ClazzLoader.tryToLoadNext = function (file) {
11621162
*/
11631163
if (ClazzLoader.lockQueueBe4SWT && ClazzLoader.pkgRefCount != 0
11641164
&& file.lastIndexOf ("package.js") != file.length - 10
1165-
&& (ClazzLoader.isGecko || ClazzLoader.isIE)) { // No Opera!
1165+
&& !ClazzLoader.isOpera) { // No Opera! Opera is in single thread.
11661166
var qbs = ClazzLoader.queueBe4SWT;
11671167
qbs[qbs.length] = file;
11681168
return;
@@ -2298,11 +2298,17 @@ ClazzLoader.runtimeLoaded = function () {
22982298
*/
22992299
/* public */
23002300
ClazzLoader.loadZJar = function (zjarPath, keyClazz) {
2301-
ClazzLoader.jarClasspath (zjarPath, [keyClazz]);
2301+
var keyClass = keyClazz;
2302+
var isArr = (keyClazz instanceof Array);
2303+
if (isArr) {
2304+
keyClass = keyClazz[keyClazz.length - 1];
2305+
}
2306+
ClazzLoader.jarClasspath (zjarPath, isArr ? keyClazz
2307+
: [keyClazz]);
23022308
if (keyClazz == ClazzLoader.runtimeKeyClass) {
2303-
ClazzLoader.loadClass (keyClazz, ClazzLoader.runtimeLoaded, true);
2309+
ClazzLoader.loadClass (keyClass, ClazzLoader.runtimeLoaded, true);
23042310
} else {
2305-
ClazzLoader.loadClass (keyClazz, null, true);
2311+
ClazzLoader.loadClass (keyClass, null, true);
23062312
}
23072313
};
23082314

@@ -2363,7 +2369,8 @@ ClazzLoader.addChildClassNode = function (parent, child, type) {
23632369
break;
23642370
}
23652371
}
2366-
if (!existed) {
2372+
if (!existed && parent.name != null && parent != ClazzLoader.clazzTreeRoot
2373+
&& parent != child) {
23672374
child.parents[child.parents.length] = parent;
23682375
}
23692376
};

sources/net.sf.j2s.java.core/src/java/package.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ window["java.registered"] = false;
1616
ClazzLoader.loadZJar (base + "core.z.js", ClazzLoader.runtimeKeyClass); //"java.lang.String"
1717

1818
ClazzLoader.jarClasspath (base + "core.z.js", [
19+
"java.net.URLEncoder",
20+
"java.net.URLDecoder",
21+
1922
"net.sf.j2s.ajax.HttpRequest",
2023
"$.IXHRCallback",
2124
"$.XHRCallbackAdapter",
@@ -93,11 +96,11 @@ window["java.registered"] = false;
9396
"$.Field",
9497
"$.Method"
9598
]);
99+
ClazzLoader.jarClasspath (base + "lang/StringBuilder.z.js",
100+
["java.lang.AbstractStringBuilder", "$.StringBuilder"]);
96101
base = base.substring (0, base.lastIndexOf ("java/"));
97-
ClazzLoader.jarClasspath (base + "org/apache/harmony/luni/util/Msg.js",
98-
["org.apache.harmony.luni.util.Msg"]);
99-
ClazzLoader.jarClasspath (base + "org/apache/harmony/luni/util/MsgHelp.js",
100-
["org.apache.harmony.luni.util.MsgHelp"]);
102+
ClazzLoader.jarClasspath (base + "org/apache/harmony/luni/util/Msg.z.js",
103+
["org.apache.harmony.luni.util.Msg", "$.MsgHelp"]);
101104
}) ();
102105

103106
/* private */

0 commit comments

Comments
 (0)