[
https://issues.apache.org/jira/browse/LANG-624?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12985258#action_12985258
]
Henri Yandell commented on LANG-624:
------------------------------------
Digging deeper into SystemUtils and specifically what I think should change:
JAVA_VERSION: Keep as is. It's fair to expect it to point to java.version. That
that is the vendor version should be noted in the javadoc.
JAVA_VERSION_TRIMMED: We shouldn't be trying to parse the specification version
out of java.version. Remove this.
getJavaVersionTrimmed(): Private method for the above. Also remove.
JAVA_VERSION_FLOAT: This now becomes impossible. Remove this - I don't think
there's huge need to have code only run on 1.6.1 of a JVM. Sure it might be a
good way to get around some bug in 1.6.0, but the code becomes inherently
unportable.
JAVA_VERSION_INT: Same as above. Remove.
getJavaVersionMatches: Move this over to using JAVA_SPECIFICATION_VERSION.
isJavaVersionAtLeast: Move to spec version. This means having a private Float
version(?). Drop the int variant of this method as it's silly to pass in 13
instead of 1.3. In general this is a silly method; the better solution imo
would be to have a JAVA_1_2 enum :) I wonder if that's something we should
consider for all of the IS_XYZ 'constants'?
> SystemUtils.getJavaVersionAsFloat throws StringIndexOutOfBoundsException on
> Android runtime/Dalvik VM
> -----------------------------------------------------------------------------------------------------
>
> Key: LANG-624
> URL: https://issues.apache.org/jira/browse/LANG-624
> Project: Commons Lang
> Issue Type: Bug
> Components: lang.*
> Affects Versions: 2.5
> Reporter: Travis Truman
> Fix For: 3.0
>
> Attachments: AndriodJavaVersion.png
>
>
> Can be replicated in the Android emulator quite easily.
> Stack trace:
> {noformat}
> at
> org.apache.commons.lang.builder.ToStringBuilder.<clinit>(ToStringBuilder.java:98)
> E/AndroidRuntime( 1681): ... 17 more
> E/AndroidRuntime( 1681): Caused by: java.lang.ExceptionInInitializerError
> E/AndroidRuntime( 1681): at
> org.apache.commons.lang.builder.ToStringStyle$MultiLineToStringStyle.<init>(ToStringStyle.java:2276)
> E/AndroidRuntime( 1681): at
> org.apache.commons.lang.builder.ToStringStyle.<clinit>(ToStringStyle.java:94)
> E/AndroidRuntime( 1681): ... 18 more
> E/AndroidRuntime( 1681): Caused by: java.lang.StringIndexOutOfBoundsException
> E/AndroidRuntime( 1681): at java.lang.String.substring(String.java:1571)
> E/AndroidRuntime( 1681): at
> org.apache.commons.lang.SystemUtils.getJavaVersionAsFloat(SystemUtils.java:1153)
> E/AndroidRuntime( 1681): at
> org.apache.commons.lang.SystemUtils.<clinit>(SystemUtils.java:818)
> {noformat}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.