Unsupported resource bundle access & running Javac was: GraalVM 0.20 Release

Jaroslav Tulach jaroslav.tulach at oracle.com
Mon Feb 13 04:16:43 UTC 2017


On čtvrtek 9. února 2017 6:54:25 CET Michel Trudeau wrote:
> Yes, I am running into this one as well.
> 
> UNSUPPORTED FEATURE: Access of resource bundle that was not pre-cached:
> com.sun.tools.javac.resources.version
> 
> Which I have yet to find a good workaround.

There is an SVM feature that allows one to instruct SVM to include certain 
resource bundles when generating an image. I have implemented it in Oct 2015 
and as far as I can see, it is still ready for use.

I am not however sure how to trigger that feature on in the GraalVM @ 0.20 
build. It gets triggered by @RequiredFeature({ResourcesFeature.class}) in the 
tests I have provided...

Btw. I have implemented that SVM feature based on my previous work of [getting 
Javac running on top of Bck2Brwsr](http://dew.apidesign.org/dew/). Michel, 
looks like you are trying to get Javac running on top of SVM. That is great, 
but I am afraid it won't work out of the box. 

Here is [the list of JDK classes that I had to additionally implement]
(https://github.com/jtulach/bck2brwsr/compare/release-0.8...release-0.8.1) to 
get Javac running on my restricted JVM:

bck2brwsr$ git diff release-0.8...release-0.8.1 | grep ^diff.*rt/emul/compact 
| cut -f 3 -d " " | cut -f 2- -d / | grep -v /test/
$ cat /tmp/support-javac 
rt/emul/compact/pom.xml
rt/emul/compact/src/main/java/java/io/BufferedInputStream.java
rt/emul/compact/src/main/java/java/io/FileDescriptor.java
rt/emul/compact/src/main/java/java/io/FileInputStream.java
rt/emul/compact/src/main/java/java/io/FileOutputStream.java
rt/emul/compact/src/main/java/java/io/FileReader.java
rt/emul/compact/src/main/java/java/io/FileWriter.java
rt/emul/compact/src/main/java/java/io/FilterReader.java
rt/emul/compact/src/main/java/java/io/FilterWriter.java
rt/emul/compact/src/main/java/java/io/LineNumberInputStream.java
rt/emul/compact/src/main/java/java/io/LineNumberReader.java
rt/emul/compact/src/main/java/java/io/OutputStreamWriter.java
rt/emul/compact/src/main/java/java/io/PrintStream.java
rt/emul/compact/src/main/java/java/io/PrintWriter.java
rt/emul/compact/src/main/java/java/io/StringReader.java
rt/emul/compact/src/main/java/java/io/StringWriter.java
rt/emul/compact/src/main/java/java/io/SyncFailedException.java
rt/emul/compact/src/main/java/java/lang/System.java
rt/emul/compact/src/main/java/java/lang/Thread.java
rt/emul/compact/src/main/java/java/lang/annotation/Annotation.java
rt/emul/compact/src/main/java/java/lang/annotation/AnnotationFormatError.java
rt/emul/compact/src/main/java/java/lang/annotation/
AnnotationTypeMismatchException.java
rt/emul/compact/src/main/java/java/lang/annotation/Documented.java
rt/emul/compact/src/main/java/java/lang/annotation/ElementType.java
rt/emul/compact/src/main/java/java/lang/annotation/
IncompleteAnnotationException.java
rt/emul/compact/src/main/java/java/lang/annotation/Inherited.java
rt/emul/compact/src/main/java/java/lang/annotation/Retention.java
rt/emul/compact/src/main/java/java/lang/annotation/RetentionPolicy.java
rt/emul/compact/src/main/java/java/lang/annotation/Target.java
rt/emul/compact/src/main/java/java/lang/annotation/package-info.java
rt/emul/compact/src/main/java/java/net/URLConnection.java
rt/emul/compact/src/main/java/java/nio/charset/Charset.java
rt/emul/compact/src/main/java/java/nio/charset/CharsetDecoder.java
rt/emul/compact/src/main/java/java/nio/charset/CharsetEncoder.java
rt/emul/compact/src/main/java/java/nio/charset/
IllegalCharsetNameException.java
rt/emul/compact/src/main/java/java/nio/charset/
UnsupportedCharsetException.java
rt/emul/compact/src/main/java/java/security/AccessController.java
rt/emul/compact/src/main/java/java/security/PrivilegedAction.java
rt/emul/compact/src/main/java/java/security/PrivilegedActionException.java
rt/emul/compact/src/main/java/java/security/PrivilegedExceptionAction.java
rt/emul/compact/src/main/java/java/text/Annotation.java
rt/emul/compact/src/main/java/java/text/AttributedCharacterIterator.java
rt/emul/compact/src/main/java/java/text/AttributedString.java
rt/emul/compact/src/main/java/java/text/CalendarBuilder.java
rt/emul/compact/src/main/java/java/text/CharacterIterator.java
rt/emul/compact/src/main/java/java/text/CharacterIteratorFieldDelegate.java
rt/emul/compact/src/main/java/java/text/ChoiceFormat.java
rt/emul/compact/src/main/java/java/text/DateFormat.java
rt/emul/compact/src/main/java/java/text/DateFormatSymbols.java
rt/emul/compact/src/main/java/java/text/DecimalFormat.java
rt/emul/compact/src/main/java/java/text/DecimalFormatSymbols.java
rt/emul/compact/src/main/java/java/text/DigitList.java
rt/emul/compact/src/main/java/java/text/DontCareFieldPosition.java
rt/emul/compact/src/main/java/java/text/FieldPosition.java
rt/emul/compact/src/main/java/java/text/Format.java
rt/emul/compact/src/main/java/java/text/MessageFormat.java
rt/emul/compact/src/main/java/java/text/NumberFormat.java
rt/emul/compact/src/main/java/java/text/ParseException.java
rt/emul/compact/src/main/java/java/text/ParsePosition.java
rt/emul/compact/src/main/java/java/text/SimpleDateFormat.java
rt/emul/compact/src/main/java/java/util/BitSet.java
rt/emul/compact/src/main/java/java/util/Calendar.java
rt/emul/compact/src/main/java/java/util/Currency.java
rt/emul/compact/src/main/java/java/util/CurrencyData.properties
rt/emul/compact/src/main/java/java/util/Date.java
rt/emul/compact/src/main/java/java/util/EnumMap.java
rt/emul/compact/src/main/java/java/util/EnumSet.java
rt/emul/compact/src/main/java/java/util/JumboEnumSet.java
rt/emul/compact/src/main/java/java/util/Locale.java
rt/emul/compact/src/main/java/java/util/MissingResourceException.java
rt/emul/compact/src/main/java/java/util/Properties.java
rt/emul/compact/src/main/java/java/util/PropertyResourceBundle.java
rt/emul/compact/src/main/java/java/util/RegularEnumSet.java
rt/emul/compact/src/main/java/java/util/ResourceBundle.java
rt/emul/compact/src/main/java/java/util/SimpleTimeZone.java
rt/emul/compact/src/main/java/java/util/TimeZone.java
rt/emul/compact/src/main/java/java/util/Timer.java
rt/emul/compact/src/main/java/java/util/TimerTask.java
rt/emul/compact/src/main/java/java/util/concurrent/ConcurrentHashMap.java
rt/emul/compact/src/main/java/java/util/concurrent/ConcurrentMap.java
rt/emul/compact/src/main/java/java/util/concurrent/atomic/AtomicBoolean.java
rt/emul/compact/src/main/java/java/util/concurrent/atomic/AtomicInteger.java
rt/emul/compact/src/main/java/java/util/concurrent/atomic/
AtomicIntegerArray.java
rt/emul/compact/src/main/java/java/util/concurrent/atomic/AtomicLong.java
rt/emul/compact/src/main/java/java/util/concurrent/atomic/AtomicLongArray.java
rt/emul/compact/src/main/java/java/util/concurrent/atomic/AtomicReference.java
rt/emul/compact/src/main/java/java/util/concurrent/atomic/
AtomicReferenceArray.java
rt/emul/compact/src/main/java/java/util/concurrent/atomic/package-info.java
rt/emul/compact/src/main/java/java/util/logging/Logger.java
rt/emul/compact/src/main/java/java/util/regex/ASCII.java
rt/emul/compact/src/main/java/java/util/regex/MatchResult.java
rt/emul/compact/src/main/java/java/util/regex/Matcher.java
rt/emul/compact/src/main/java/java/util/regex/Pattern.java
rt/emul/compact/src/main/java/java/util/regex/PatternSyntaxException.java
rt/emul/compact/src/main/java/java/util/regex/UnicodeProp.java
rt/emul/compact/src/main/java/java/util/regex/package.html
rt/emul/compact/src/main/java/org/apidesign/bck2brwsr/emul/reflect/
ProxyImpl.java

Apart from some missing implementations, the biggest problem is going to be 
the annotation processing. Javac is using java.lang.reflect.Proxy to 
dynamically create implementations of annotation classes before passing them 
to annotation processors. That is something SVM can't do at the moment. On the 
other hand annotation processors are supposed to be loaded dynamically and 
that will not work either...

-jt

> > Thomas Wuerthinger <mailto:thomas.wuerthinger at oracle.com>
> > February 9, 2017 at 5:49 AM
> > Michel,
> > 
> > Currently we only support the following zip related classes
> > but not java.util.zip.ZipFile or java.util.jar.JarFile in AOT images.
> > 
> > We might be able to add support for java.util.jar.JarFile in a future
> > release. Is this the only class blocking you or are you running into
> > additional issues?
> > 
> > Thanks, thomas
> > 
> > 
> > 
> > Michel Trudeau <mailto:michel.trudeau at oracle.com>
> > February 8, 2017 at 5:28 PM
> > I've been trying to create an aot-image for my application, it is
> > using JarFile class, and I end up with the following error.   Any
> > workaround ?   I tried replacing the JarFile class in the rt.jar from
> > the downloaded graal distribution with one that doesn't contain a
> > reference to JarVerifier, but that didn't work.
> > 
> >     java.util.jar.JarFile.getManifestFromReference(): Type is marked
> > 
> > as deleted: HotSpotType<Ljava/util/jar/JarVerifier;, resolved>
> > 
> >         at
> > 
> > java.util.jar.JarFile.getManifestFromReference(JarFile.java:184)
> > 
> >         at java.util.jar.JarFile.getManifest(JarFile.java:180)
> > 
> > Thanks,
> > Christian Humer <mailto:christian.humer at gmail.com>
> > February 8, 2017 at 8:13 AM
> > Hi guys,
> > 
> > GraalVM 0.20 with the latest bits of Graal, Truffle, Graal.JS,
> > TruffleRuby, FastR and SVM just landed on OTN.
> > 
> > The bits are from early February and based on Truffle 0.23 and LabsJDK
> > 8 with JVMCI 0.23.
> > 
> > New and Noteworthy:
> > * This release now includes the Substrate VM image builder
> > (bin/aot-image). It is possible to create SVM executable images of
> > Graal.JS using "bin/aot-image --js" and TruffleRuby using
> > "bin/aot-image --ruby".
> > * Instead of a Development Kit and Runtime distribution we now
> > distinguish between GraalVM with JDK and GraalVM without. The version
> > without JDK requires a JVMCI enabled JDK 8 to be specified using the
> > JAVA_HOME environment variable. Please note that this version of
> > GraalVM is not yet compatible with early access builds of JDK9.
> > 
> > Get it here:
> > http://www.oracle.com/technetwork/oracle-labs/program-languages/downloads/
> > index.html
> > 
> > 
> > Next release should arrive mid March.
> > 
> > Cheers,
> > Christian Humer




More information about the graal-dev mailing list