groovy

Groovy-all-jdk14-1.6.5 not usable - java/util/concurrent/locks/AbstractQueuedSynchronizer

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Blocker Blocker
  • Resolution: Not A Bug
  • Affects Version/s: 1.6.5
  • Fix Version/s: 1.6.6
  • Component/s: groovy-jdk
  • Labels:
    None
  • Environment:
    JDK 1.4
  • Number of attachments :
    0

Description

When trying to use backported version of the Groovy on JDK14 platform I am getting exception:

Caused by: java.lang.NoClassDefFoundError: java/util/concurrent/locks/AbstractQueuedSynchronizer
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at groovyjarjarbackport.java.util.concurrent.ConcurrentHashMap.<init>(ConcurrentHashMap.java:602)
at groovyjarjarbackport.java.util.concurrent.ConcurrentHashMap.<init>(ConcurrentHashMap.java:653)
at groovyjarjarretroruntime.impl.WeakIdentityTable.<init>(WeakIdentityTable.java:42)
at groovyjarjarretroruntime.java.lang.Enum_$1.<init>(Enum_.java:49)
at groovyjarjarretroruntime.java.lang.Enum_.<clinit>(Enum_.java:47)
at org.codehaus.groovy.transform.ASTTransformationVisitor.addPhaseOperations(ASTTransformationVisitor.java:158)
at org.codehaus.groovy.control.CompilationUnit.<init>(CompilationUnit.java:177)
at org.codehaus.groovy.control.CompilationUnit.<init>(CompilationUnit.java:116)
at groovy.lang.GroovyClassLoader.createCompilationUnit(GroovyClassLoader.java:443)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:266)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:249)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:244)
at groovy.util.GroovyScriptEngine.parseScript(GroovyScriptEngine.java:330)
at groovy.util.GroovyScriptEngine.updateCacheEntry(GroovyScriptEngine.java:315)
at groovy.util.GroovyScriptEngine.loadScriptByName(GroovyScriptEngine.java:271)
at com.fg.scripting.groovy.DevelopmentGroovyFactory.loadClass(DevelopmentGroovyFactory.java:220)
at com.fg.scripting.groovy.DevelopmentGroovyFactory.createInstance(DevelopmentGroovyFactory.java:119)
at com.fg.webapp.cps.v1.action.ClassUtil.getClassInstance(ClassUtil.java:74)
at com.fg.webapp.cps.v1.core.macros.CustomAction.getCustomActionClass(CustomAction.java:113)
at com.fg.webapp.cps.v1.core.macros.CustomAction.processAction(CustomAction.java:84)
at com.fg.webapp.cps.v1.core.macros.Action.process(Action.java:128)
... 27 more

Seems that this issue was already discussed in mail thread: http://marc.info/?l=groovy-dev&m=120685075128853&w=2
But in the latest version it still occurs! Problem lies in class:

groovy-all-jdk14-1.6.5.jar\groovyjarjarbackport\java\util\concurrent\locks\ReentrantLock.class

That if opened has in itself:

groovyjarjarbackport/java/util/concurrent/locks/ReentrantLock 5java/util/concurrent/locks/AbstractQueuedSynchronizer LockableObject.java owner Ljava/lang/Thread; <init> ()V

this ?Lgroovyjarjarbackport/java/util/concurrent/locks/ReentrantLock; isHeldExclusively ()Z getState ()I
java/lang/Thread
currentThread ()Ljava/lang/Thread;
lock compareAndSetState (II)Z
acquire (I)V ! "

  1. unlock release (I)Z & '
    (
    tryAcquire setState + "
    , acquires I current c
    tryRelease &java/lang/IllegalMonitorStateException 3
    4
    releases free Z Code LocalVariableTable LineNumberTable
    SourceFile !

So that means that backport is sttill unusable.

Activity

Hide
blackdrag blackdrag added a comment -

the solution is to provide a backport of AbstractQueuedSynchronizer by our own, since retrotranslator does not. The package for it has to be groovyjarjarbackport.java.util, but besides tat the class must only be on the classpath for retrotranslator

Show
blackdrag blackdrag added a comment - the solution is to provide a backport of AbstractQueuedSynchronizer by our own, since retrotranslator does not. The package for it has to be groovyjarjarbackport.java.util, but besides tat the class must only be on the classpath for retrotranslator
Hide
blackdrag blackdrag added a comment -

There was a usage of that stuff earlier, but that was resolved. Even if there is a class referring to concurrent classes, unless the class is loaded there will be no problem and our running tests under jdk1.4 shows that whatever the problem is, is not there in a normal case. Even if there is a reference to that class, then the bug seems to be on the side of retro translator, not Groovy itself, since normally retro translator should ensure such things will not happen.

Show
blackdrag blackdrag added a comment - There was a usage of that stuff earlier, but that was resolved. Even if there is a class referring to concurrent classes, unless the class is loaded there will be no problem and our running tests under jdk1.4 shows that whatever the problem is, is not there in a normal case. Even if there is a reference to that class, then the bug seems to be on the side of retro translator, not Groovy itself, since normally retro translator should ensure such things will not happen.

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: