Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OsmAndMapCreator crash if run via openjdk 17 #484

Open
Vascom opened this issue May 4, 2022 · 7 comments
Open

OsmAndMapCreator crash if run via openjdk 17 #484

Vascom opened this issue May 4, 2022 · 7 comments

Comments

@Vascom
Copy link

Vascom commented May 4, 2022

Can you please fix working with modern versions of JAVA OpenJDK?
For example openjdk 17 by default in Fedora Linux.
Now I use openjdk 11 to build maps with OsmAndMapCreator.

@vshcherb
Copy link
Member

vshcherb commented May 4, 2022

Any crash log do you have?

@Vascom
Copy link
Author

Vascom commented May 4, 2022

Used java-17-openjdk-headless-17.0.2.0.8-7.fc36.x86_64 package

мая 04, 2022 3:49:42 PM net.osmand.impl.ConsoleProgressImplementation startTaskLong
FINE: Memory before task exec: 1371537408 free : 561806248
мая 04, 2022 3:49:42 PM net.osmand.impl.ConsoleProgressImplementation startTaskLong
INFO: process_osm_rel started after 12115 ms - 4128
мая 04, 2022 3:49:42 PM net.osmand.impl.ConsoleProgressImplementation startWorkLong
INFO: Task process_osm_rel: work total has changed to 4128
мая 04, 2022 3:49:42 PM net.osmand.obf.preparation.IndexCreator generateIndexes
SEVERE: Log exception
java.lang.reflect.InaccessibleObjectException: Unable to make private java.util.Collections$EmptyMap() accessible: module java.base does not "opens java.util" to unnamed module @1475a980
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
        at java.base/java.lang.reflect.Constructor.checkCanSetAccessible(Constructor.java:188)
        at java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:181)
        at com.google.gson.internal.reflect.UnsafeReflectionAccessor.makeAccessible(UnsafeReflectionAccessor.java:44)
        at com.google.gson.internal.ConstructorConstructor.newDefaultConstructor(ConstructorConstructor.java:103)
        at com.google.gson.internal.ConstructorConstructor.get(ConstructorConstructor.java:85)
        at com.google.gson.internal.bind.MapTypeAdapterFactory.create(MapTypeAdapterFactory.java:127)
        at com.google.gson.Gson.getAdapter(Gson.java:458)
        at com.google.gson.Gson.toJson(Gson.java:696)
        at com.google.gson.Gson.toJson(Gson.java:683)
        at com.google.gson.Gson.toJson(Gson.java:638)
        at com.google.gson.Gson.toJson(Gson.java:618)
        at net.osmand.obf.preparation.IndexTransportCreator.writeRouteStops(IndexTransportCreator.java:522)
        at net.osmand.obf.preparation.IndexTransportCreator.insertTransportIntoIndex(IndexTransportCreator.java:482)
        at net.osmand.obf.preparation.IndexTransportCreator.iterateMainEntity(IndexTransportCreator.java:316)
        at net.osmand.obf.preparation.IndexCreator.iterateMainEntity(IndexCreator.java:218)
        at net.osmand.obf.preparation.IndexCreator.access$100(IndexCreator.java:55)
        at net.osmand.obf.preparation.IndexCreator$7.iterateEntity(IndexCreator.java:783)
        at net.osmand.obf.preparation.OsmDbAccessor.iterateOverEntities(OsmDbAccessor.java:253)
        at net.osmand.obf.preparation.OsmDbAccessor.iterateOverEntities(OsmDbAccessor.java:207)
        at net.osmand.obf.preparation.IndexCreator.iterateMainEntities(IndexCreator.java:780)
        at net.osmand.obf.preparation.IndexCreator.generateIndexes(IndexCreator.java:627)
        at net.osmand.obf.preparation.IndexCreator.generateIndexes(IndexCreator.java:538)
        at net.osmand.MainUtilities.generateObf(MainUtilities.java:297)
        at net.osmand.MainUtilities.main(MainUtilities.java:111)

Exception in thread "main" java.lang.reflect.InaccessibleObjectException: Unable to make private java.util.Collections$EmptyMap() accessible: module java.base does not "opens java.util" to unnamed module @1475a980
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
        at java.base/java.lang.reflect.Constructor.checkCanSetAccessible(Constructor.java:188)
        at java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:181)
        at com.google.gson.internal.reflect.UnsafeReflectionAccessor.makeAccessible(UnsafeReflectionAccessor.java:44)
        at com.google.gson.internal.ConstructorConstructor.newDefaultConstructor(ConstructorConstructor.java:103)
        at com.google.gson.internal.ConstructorConstructor.get(ConstructorConstructor.java:85)
        at com.google.gson.internal.bind.MapTypeAdapterFactory.create(MapTypeAdapterFactory.java:127)
        at com.google.gson.Gson.getAdapter(Gson.java:458)
        at com.google.gson.Gson.toJson(Gson.java:696)
        at com.google.gson.Gson.toJson(Gson.java:683)
        at com.google.gson.Gson.toJson(Gson.java:638)
        at com.google.gson.Gson.toJson(Gson.java:618)
        at net.osmand.obf.preparation.IndexTransportCreator.writeRouteStops(IndexTransportCreator.java:522)
        at net.osmand.obf.preparation.IndexTransportCreator.insertTransportIntoIndex(IndexTransportCreator.java:482)
        at net.osmand.obf.preparation.IndexTransportCreator.iterateMainEntity(IndexTransportCreator.java:316)
        at net.osmand.obf.preparation.IndexCreator.iterateMainEntity(IndexCreator.java:218)
        at net.osmand.obf.preparation.IndexCreator.access$100(IndexCreator.java:55)
        at net.osmand.obf.preparation.IndexCreator$7.iterateEntity(IndexCreator.java:783)
        at net.osmand.obf.preparation.OsmDbAccessor.iterateOverEntities(OsmDbAccessor.java:253)
        at net.osmand.obf.preparation.OsmDbAccessor.iterateOverEntities(OsmDbAccessor.java:207)
        at net.osmand.obf.preparation.IndexCreator.iterateMainEntities(IndexCreator.java:780)
        at net.osmand.obf.preparation.IndexCreator.generateIndexes(IndexCreator.java:627)
        at net.osmand.obf.preparation.IndexCreator.generateIndexes(IndexCreator.java:538)
        at net.osmand.MainUtilities.generateObf(MainUtilities.java:297)
        at net.osmand.MainUtilities.main(MainUtilities.java:111)

@daniel-wojcik
Copy link

@vshcherb any news on it? I have the same issue... Windows 10 java 19

@vshcherb
Copy link
Member

No new as we have no immediate plans to switch to Java 17, currently based on Java 11. Probably next year.

@mattmccutchen
Copy link

For now, rather than installing Java 11, I'm using the workaround from #334 (comment): pass --add-opens java.base/java.util=ALL-UNNAMED to the JVM (or in my case, add it to $JAVA_OPTS before running utilities.sh). If I run into more problems with Java 17, I'll try Java 11.

@daniel-wojcik
Copy link

Thanks, I'll try it. In the meantime I reverted my system to Java 11.

@jessienab
Copy link

jessienab commented Nov 16, 2022

For now, rather than installing Java 11, I'm using the workaround from #334 (comment): pass --add-opens java.base/java.util=ALL-UNNAMED to the JVM (or in my case, add it to $JAVA_OPTS before running utilities.sh). If I run into more problems with Java 17, I'll try Java 11.

Convenient timing, thanks!

With that flag added to $JAVA_OPTS, confirmed working using the utilities.sh script:

  • OpenJDK build 19.0.1+10
  • Arch Linux local/jre-openjdk-headless 19.0.1.u10-3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants