[jboss-jira] [JBoss JIRA] (WFLY-12701) JSTL EL Evulation not working properly throwing NoClassDefFoundError

James Perkins (Jira) issues at jboss.org
Fri Oct 25 11:11:00 EDT 2019


     [ https://issues.jboss.org/browse/WFLY-12701?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

James Perkins updated WFLY-12701:
---------------------------------
    Steps to Reproduce: 
create a jsp Page
1. import JSTL core libraray {{<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>}}
2. create a bean object com.akash.Person and add
{{<jsp:useBean id="person" class="com.akashPerson" scope="session"/>}}
3 . write JSTL evaluation ${person.name}

try to lunach the wildlfy server with deployed JSP in windows machine
it will throw the above error mention in the description

Probable Fix Required in class
java.el.ImportHandler.java of jboss-el-api_3.0_spec.1.0.13.final.jar

{code}
    private Class<?> getClassFor(String className) {
        if (!notAClass.contains(className)) {
            try {
                return Class.forName(className, false, Thread.currentThread().getContextClassLoader());
            } catch (ClassNotFoundException ex) {
                notAClass.add(className);
            }
        }
        return null;
    }
{code}

the above code will only work if class will throw ClassNotFoundException
but in windows when it will try to create instance of a class
ex -- com.rendition.person instead of com.rendition.Person
it will throw NoClassDefFoundError
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8024775 
https://bugs.openjdk.java.net/browse/JDK-8133522

Fix can be to catch NoClassDefFoundError
{code}
private Class<?> getClassFor(String className) {
        if (!notAClass.contains(className)) {
            try {
                return Class.forName(className, false, Thread.currentThread().getContextClassLoader());
            } catch (ClassNotFoundException ex || NoClassDefFoundError ex1) {
                notAClass.add(className);
            }
        }
        return null;
    }
{code}

  was:
create a jsp Page
1. import JSTL core libraray {{<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>}}
2. create a bean object com.akash.Person and add
{{<jsp:useBean id="person" class="com.akashPerson" scope="session"/>}}
3 . write JSTL evaluation ${person.name}

try to lunach the wildlfy server with deployed JSP in windows machine
it will throw the above error mention in the description

Probable Fix Required in class
java.el.ImportHandler.java of jboss-el-api_3.0_spec.1.0.13.final.jar

{code}
    private Class<?> getClassFor(String className) {
        if (!notAClass.contains(className)) {
            try {
                return Class.forName(className, false, Thread.currentThread().getContextClassLoader());
            } catch (ClassNotFoundException ex) {
                notAClass.add(className);
            }
        }
        return null;
    }
{code}

the above code will only work if class will throw ClassNotFoundException
but in windows when it will try to create instance of a class
ex -- com.rendition.person instead of com.rendition.Person
it will throw NoClassDefFoundError
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8024775 
https://bugs.openjdk.java.net/browse/JDK-8133522

Fix can be to catch NoClassDefFoundError

private Class<?> getClassFor(String className) {
        if (!notAClass.contains(className)) {
            try {
                return Class.forName(className, false, Thread.currentThread().getContextClassLoader());
            } catch (ClassNotFoundException ex || NoClassDefFoundError ex1) {
                notAClass.add(className);
            }
        }
        return null;
    }



> JSTL EL Evulation not working properly  throwing NoClassDefFoundError
> ---------------------------------------------------------------------
>
>                 Key: WFLY-12701
>                 URL: https://issues.jboss.org/browse/WFLY-12701
>             Project: WildFly
>          Issue Type: Bug
>          Components: EE
>    Affects Versions: 16.0.0.Final
>         Environment: Windows
>            Reporter: Akash Gupta
>            Assignee: Brian Stansberry
>            Priority: Blocker
>             Fix For: No Release
>
>
> Following is the stacktrace of server running on wildlfy
> {code}
> 2019/10/21 17:02:09 WARN  [org.jboss.modules.define] Failed to define class com.akash.web.beans.deviceBean in Module "deployment.sample.ear.sample1.war" from Service Module Loader: java.lang.NoClassDefFoundError: Failed to link com/akash/web/beans/deviceBean (Module "deployment.sample.ear.sample1.war" from Service Module Loader): com/akash/web/beans/deviceBean (wrong name: com/akash/web/beans/DeviceBean)
> 	at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.8.0_212]
> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:763) [rt.jar:1.8.0_212]
> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:839) [rt.jar:1.8.0_212]
> 	at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:424) [jboss-modules.jar:1.9.0.Final]
> 	at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555) [jboss-modules.jar:1.9.0.Final]
> 	at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339) [jboss-modules.jar:1.9.0.Final]
> 	at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126) [jboss-modules.jar:1.9.0.Final]
> 	at org.jboss.modules.Module.loadModuleClass(Module.java:731) [jboss-modules.jar:1.9.0.Final]
> 	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247) [jboss-modules.jar:1.9.0.Final]
> 	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410) [jboss-modules.jar:1.9.0.Final]
> 	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.9.0.Final]
> 	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116) [jboss-modules.jar:1.9.0.Final]
> 	at java.lang.Class.forName0(Native Method) [rt.jar:1.8.0_212]
> 	at java.lang.Class.forName(Class.java:348) [rt.jar:1.8.0_212]
> 	at javax.el.ImportHandler.getClassFor(ImportHandler.java:176) [jboss-el-api_3.0_spec-1.0.13.Final.jar:1.0.13.Final]
> 	at javax.el.ImportHandler.resolveClassFor(ImportHandler.java:165) [jboss-el-api_3.0_spec-1.0.13.Final.jar:1.0.13.Final]
> 	at javax.el.ImportHandler.resolveClass(ImportHandler.java:128) [jboss-el-api_3.0_spec-1.0.13.Final.jar:1.0.13.Final]
> 	at org.wildfly.extension.undertow.ImportedClassELResolver.getValue(ImportedClassELResolver.java:83)
> 	at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:96) [jastow-2.0.7.Final.jar:2.0.7.Final]
> 	at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:116) [javax.el-impl-3.0.1-b08-jbossorg-1.jar:3.0.1-b08-jbossorg-1]
> 	at com.sun.el.parser.AstValue.getBase(AstValue.java:150) [javax.el-impl-3.0.1-b08-jbossorg-1.jar:3.0.1-b08-jbossorg-1]
> 	at com.sun.el.parser.AstValue.getValue(AstValue.java:199) [javax.el-impl-3.0.1-b08-jbossorg-1.jar:3.0.1-b08-jbossorg-1]
> 	at javax.el.ImportHandler.resolveClassFor(ImportHandler.java:161) [jboss-el-api_3.0_spec-1.0.13.Final.jar:1.0.13.Final]
> 	at javax.el.ImportHandler.resolveClass(ImportHandler.java:128) [jboss-el-api_3.0_spec-1.0.13.Final.jar:1.0.13.Final]
> 	at org.wildfly.extension.undertow.ImportedClassELResolver.getValue(ImportedClassELResolver.java:83)
> 	at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:96) [jastow-2.0.7.Final.jar:2.0.7.Final]
> 	at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:116) [javax.el-impl-3.0.1-b08-jbossorg-1.jar:3.0.1-b08-jbossorg-1]
> 	at com.sun.el.parser.AstValue.getBase(AstValue.java:150) [javax.el-impl-3.0.1-b08-jbossorg-1.jar:3.0.1-b08-jbossorg-1]
> 	at com.sun.el.parser.AstValue.getValue(AstValue.java:199) [javax.el-impl-3.0.1-b08-jbossorg-1.jar:3.0.1-b08-jbossorg-1]
> 	at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:226) [javax.el-impl-3.0.1-b08-jbossorg-1.jar:3.0.1-b08-jbossorg-1]
> 	at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:917) [jastow-2.0.7.Final.jar:2.0.7.Final]
> 	at org.apache.jsp.task_frames_jsp._jspService(task_frames_jsp.java:2641)
> {code}



--
This message was sent by Atlassian Jira
(v7.13.8#713008)


More information about the jboss-jira mailing list