--- a/JavaRelease.st Mon Mar 18 17:59:29 2013 +0100
+++ b/JavaRelease.st Mon Mar 18 18:08:04 2013 +0100
@@ -232,10 +232,27 @@
!
available
- | releases |
+ | releases out path |
+
releases := self all select: [:rel | rel isAvailable ].
- releases isEmpty
- ifTrue: [ self error: 'No Java release found'. ^nil ].
+ releases isEmpty ifTrue: [
+ "/ none of the releases seems to be installed in a way that it is found
+ "/ out of the box. Try a 'java' command...
+ (path := OperatingSystem pathOfCommand:'java') notNil ifTrue:[
+ out := WriteStream on:(String new:100).
+ (OperatingSystem executeCommand:'java -version' outputTo:out) ifTrue:[
+ out := out contents.
+ releases := self all select:[:rel | rel validateJavaVersionString:out].
+ ('/System/Library/Java' asFilename) exists
+ releases do:[:each |
+ each javaHome:('/System/Library/Java/Home' asFilename).
+ ].
+ ].
+ ].
+ releases isEmpty ifTrue: [
+ self error: 'No Java release found'. ^nil
+ ].
+ ].
^releases
"
@@ -277,11 +294,11 @@
bootClassPath
"Returns a default value of sun.boot.class.path"
+ bootClassPath isNil ifTrue:[
+ | jreHome libs |
- bootClassPath isNil ifTrue:[
- | libs |
-
- libs := self jreHome / 'lib'.
+ jreHome := self jreHome.
+ libs := jreHome / 'lib'.
bootClassPath := OrderedCollection new.
libs directoryContentsAsFilenames do:[:each|
(each pathName endsWith:'.jar') ifTrue:[
@@ -304,6 +321,16 @@
"Modified: / 23-01-2013 / 15:18:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+bootClassPath:aCollectionOfPathes
+ "Change the bootClassPath"
+
+ bootClassPath := OrderedCollection withAll:aCollectionOfPathes.
+
+ "
+ Java release bootClassPath
+ "
+!
+
javaBundle
"Returns bundle representing Java code (both core + extections)"
@@ -462,6 +489,10 @@
| jreHome |
+ OperatingSystem isOSXlike ifTrue:[
+ ^ '/System/Library/Java/Home' asFilename
+ ].
+
self javaHome isNil ifTrue:[ ^ nil ].
^(jreHome := self javaHome asFilename / 'jre') exists
@@ -800,8 +831,9 @@
(self validateJavaHome: h) ifTrue:[ javaHome := h. ^ javaHome ].
].
- self javaHomes do:
- [:home| | homeAsFilename |
+ self javaHomes do: [:home|
+ | homeAsFilename |
+
homeAsFilename := home asFilename.
homeAsFilename exists ifTrue:
[(self validateJavaHome: homeAsFilename) ifTrue:
@@ -882,6 +914,13 @@
"Created: / 27-10-2010 / 19:14:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 12-02-2013 / 02:51:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+validateJavaVersionString:aVersionString
+ "Return true if aVersionString (which is what 'java -version' returns)
+ matches what I expect."
+
+ ^ false
! !
!JavaRelease::OpenJDK6 class methodsFor:'documentation'!
@@ -1098,6 +1137,13 @@
^OperatingSystem isUNIXlike
"Created: / 12-02-2013 / 02:52:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+validateJavaVersionString:aVersionString
+ "Return true if aVersionString (which is what 'java -version' returns)
+ matches what I expect."
+
+ ^ aVersionString matches: 'java version "1.6.*'
! !
!JavaRelease::OpenJDK7 class methodsFor:'documentation'!
@@ -1227,6 +1273,15 @@
"Modified: / 08-02-2013 / 00:57:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!JavaRelease::OpenJDK7 methodsFor:'validating'!
+
+validateJavaVersionString:aVersionString
+ "Return true if aVersionString (which is what 'java -version' returns)
+ matches what I expect."
+
+ ^ aVersionString matches: 'java version "1.7.*'
+! !
+
!JavaRelease::OracleJDK6 class methodsFor:'documentation'!
copyright
@@ -1452,6 +1507,13 @@
"Created: / 12-02-2013 / 02:52:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 16-02-2013 / 02:54:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+validateJavaVersionString:aVersionString
+ "Return true if aVersionString (which is what 'java -version' returns)
+ matches what I expect."
+
+ ^ aVersionString matches: 'java version "1.6.*'
! !
!JavaRelease::OracleJDK7 class methodsFor:'documentation'!
@@ -1683,6 +1745,13 @@
"Created: / 12-02-2013 / 02:52:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 16-02-2013 / 02:54:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+validateJavaVersionString:aVersionString
+ "Return true if aVersionString (which is what 'java -version' returns)
+ matches what I expect."
+
+ ^ aVersionString matches: 'java version "1.7.*'
! !
!JavaRelease::SunJDK122 class methodsFor:'documentation'!
@@ -1780,14 +1849,23 @@
"Created: / 27-07-2012 / 00:04:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!JavaRelease::SunJDK122 methodsFor:'validating'!
+
+validateJavaVersionString:aVersionString
+ "Return true if aVersionString (which is what 'java -version' returns)
+ matches what I expect."
+
+ ^ aVersionString matches: 'java version "1.2.*'
+! !
+
!JavaRelease class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libjava/JavaRelease.st,v 1.9 2013-03-15 16:42:25 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libjava/JavaRelease.st,v 1.10 2013-03-18 17:08:04 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libjava/JavaRelease.st,v 1.9 2013-03-15 16:42:25 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libjava/JavaRelease.st,v 1.10 2013-03-18 17:08:04 cg Exp $'
!
version_SVN