--- a/src/JavaVM.st Wed Aug 31 21:06:09 2011 +0000
+++ b/src/JavaVM.st Wed Aug 31 21:26:59 2011 +0000
@@ -1742,6 +1742,7 @@
].
props at:'java.class.version' put:'1'.
props at:'java.class.path' put:(self defaultCLASSPATH).
+ props at:'java.ext.dirs' put:(self defaultExtDirs).
props at:'os.name' put:os.
props at:'os.arch' put:cpu.
props at:'os.version' put:'1'.
@@ -1790,7 +1791,7 @@
"Created: / 03-01-1998 / 14:26:39 / cg"
"Modified: / 27-01-2000 / 02:20:18 / cg"
- "Modified: / 12-08-2011 / 19:51:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 31-08-2011 / 20:03:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
initializeVM
@@ -2267,6 +2268,25 @@
"Modified: / 22-11-2010 / 13:44:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+defaultExtDirs
+
+ ^String streamContents:[:s|
+ Java release javaExtDirs do:[:dir|
+ s nextPutAll: dir pathName.
+ s nextPut: OperatingSystem pathSeparator.
+ ].
+ s nextPutAll:
+ ((Smalltalk packageDirectoryForPackageId: 'stx:libjava') asFilename
+ / 'java' / 'libs') pathName.
+ ]
+
+ "
+ JavaVM defaultExtDirs
+ "
+
+ "Created: / 31-08-2011 / 20:03:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
defaultHotJavaHome
^ '/usr/local/java/hotjava'.
@@ -4734,7 +4754,7 @@
ifTrue:[b readStream]
ifFalse:[(b copyFrom: off + 1 to: off + len) readStream].
[
- cls := JavaClassReader readStream: bs.
+ cls := JavaClassReader readStream: bs loader: nativeContext receiver.
] on: JavaClassReader invalidClassFormatSignal do:[
self throwClassFormatError.
^self.
@@ -4744,7 +4764,7 @@
^self reflection javaClassObjectForClass: cls.
- "Modified: / 08-08-2011 / 17:57:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 31-08-2011 / 21:18:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
_java_lang_ClassLoader_findBootstrapClass: nativeContext
@@ -4950,6 +4970,7 @@
class := self reflection classForJavaClassObject:(aJavaContext receiver).
publicOnly := (aJavaContext argAt:1) == 1.
constructors := OrderedCollection new.
+ JavaClassReader classLoaderQuerySignal answer: class classLoader do:[
class selectorsAndMethodsDo:
[:selector :method |
(method isJavaMethod and:
@@ -4958,12 +4979,13 @@
and:[ publicOnly not or:[ method isPublic ] ] ] ])
ifTrue:
[ constructors add:(self reflection javaConstructorObjectForMethod:method) ] ].
+ ].
^ (self classForName:'java.lang.reflect.Constructor') javaArrayClass
withAll:constructors
"Created: / 24-11-2010 / 09:25:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 09-02-2011 / 01:24:03 / Marcel Hlopko <hlopik@gmail.com>"
- "Modified: / 11-02-2011 / 08:55:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 31-08-2011 / 22:20:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
_java_lang_Class_getDeclaredFields0:aJavaContext
@@ -4979,14 +5001,16 @@
publicOnly := (aJavaContext argAt:1) == 1.
fields := class fields , class staticFields.
publicOnly ifTrue:[ fields := fields select:[:f | f isPublic ] ].
+ JavaClassReader classLoaderQuerySignal answer: class classLoader do:[
fields := fields
collect:[:f | self javaFieldObjectForField:f in:javaClassObject ].
+ ].
^ (self classForName:'java.lang.reflect.Field') javaArrayClass
withAll:fields
"Created: / 10-11-2010 / 16:22:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 28-01-2011 / 15:19:06 / Marcel Hlopko <hlopik@gmail.com>"
- "Modified: / 17-08-2011 / 09:06:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 31-08-2011 / 22:21:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
_java_lang_Class_getDeclaredMethods0:aJavaContext
@@ -4996,6 +5020,7 @@
class := self reflection classForJavaClassObject:(aJavaContext receiver).
publicOnly := (aJavaContext argAt:1) == 1.
methods := OrderedCollection new.
+ JavaClassReader classLoaderQuerySignal answer: class classLoader do:[
class selectorsAndMethodsDo:
[:selector :method |
(method isJavaMethod and:
@@ -5003,13 +5028,14 @@
[ (selector startsWith:'<init>(') not
and:[ publicOnly not or:[ method isPublic ] ] ] ])
ifTrue:[ methods add:(self javaMethodObjectForMethod:method) ] ].
+ ].
^ (self classForName:'java.lang.reflect.Method') javaArrayClass
withAll:methods asArray
"Created: / 21-12-2010 / 22:39:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 28-01-2011 / 15:19:09 / Marcel Hlopko <hlopik@gmail.com>"
- "Modified: / 11-02-2011 / 08:35:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 04-06-2011 / 17:07:04 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+ "Modified: / 31-08-2011 / 22:05:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
_java_lang_Class_getDeclaringClass: nativeContext
@@ -6707,11 +6733,14 @@
lastModTime := nativeContext at: 3.
result := path asFilename.
result ifNil: [ JavaVM throwZipException ].
- ^ ZipCache
- indexOf: ( ZipCache add: (ZipArchive readingFrom: result readStream) ).
+ ^[
+ ZipCache indexOf: ( ZipCache add: (ZipArchive readingFrom: result readStream) )
+ ] on: Error do:[:ex|
+ self throwIOExceptionWithMessage: 'Cannot open zip file: ', ex description
+ ]
"Modified: / 01-04-2011 / 15:35:21 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
- "Modified: / 01-05-2011 / 13:29:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 31-08-2011 / 20:56:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
_java_util_zip_ZipFile_read: aJavaContext