OGNL报错:Exception in thread "main" java.lang.ExceptionInInitializerError

使用OGNL进行简单的测试时,获取对象的属性,结果出现报错,信息如下:

Exception in thread "main" java.lang.ExceptionInInitializerError
	at ognl.ASTProperty.getValueBody(ASTProperty.java:114)
	at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
	at ognl.SimpleNode.getValue(SimpleNode.java:258)
	at ognl.Ognl.getValue(Ognl.java:494)
	at ognl.Ognl.getValue(Ognl.java:644)
	at ognl.Ognl.getValue(Ognl.java:702)
	at ognl.Ognl.getValue(Ognl.java:672)
	at OGNL1.main(OGNL1.java:15)
Caused by: java.lang.IllegalArgumentException: Javassist library is missing in classpath! Please add missed dependency!
	at ognl.OgnlRuntime.<clinit>(OgnlRuntime.java:168)
	... 8 more
Caused by: java.lang.ClassNotFoundException: javassist.ClassPool
	at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:260)
	at ognl.OgnlRuntime.<clinit>(OgnlRuntime.java:165)
	... 8 more

然后检查了一下发现是关键的包没有导入,使用OGNL需要导入两个关键的包,分别是:ognl-xxx.jar 和 javassist-xxx.GA.jar ,将这两个包导入后,运行正常

测试实例:

import ognl.Ognl;
import ognl.OgnlException;

public class OGNL1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Person person = new Person();
		person.setName("xiaoming");
		try {
			System.out.println(Ognl.getValue("passwd", person));  

			Object valueObject = Ognl.getValue("name", person);
			System.out.println(valueObject);

		} catch (OgnlException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  

	}

}

class Person{
	public String passwd = "root";
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

注:对于有访问权限的字段,无需getter方法

输出:

root

xiaoming

附:这两个jar包我就放在附件中了

时间: 2024-08-25 14:33:23

OGNL报错:Exception in thread "main" java.lang.ExceptionInInitializerError的相关文章

Spring Boot 启动报错 Exception in thread &quot;main&quot; java.lang.StringIndexOutOfBoundsException: String index out of range: 37

使用命令 java -jar springBoot.jar  启动项目,结果报错如下: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 37 at java.lang.String.substring(String.java:1963) at org.springframework.boot.loader.jar.JarFile.create

使用Grizzy+Jersey搭建一个RESTful框架()报错Exception in thread &quot;main&quot; java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;

报错的类涉及UriBuilder,我搜索类发现, 这个类存在于两个包中,我在baidu的时候,也有人提到是jar包冲突,我就删除了 这个依赖,问题解决了. 环境搭建过程请见地址https://blog.csdn.net/jinxfei/article/details/4714809 原文地址:https://www.cnblogs.com/BaleW/p/8668712.html

Spring报错:Exception in thread &quot;main&quot; java.lang.IllegalArgumentException at org.springframework.asm.ClassReader.&lt;init&gt;(Unknown Source)

简单搭建了一个Spring Maven工程就报错: 看到网上说是JDK 7 和 Spring3.x :JDK编译级别设置成1.7,仍然没有得到解决,采用版本为  3.2.0.RELEASE <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId>

报错Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: javax/xml/bind/...

首先我的jdk是11.05的 这个是由于: 这个是 由于缺少了javax.xml.bind,在jdk10.0.1中没有包含这个包,所以我自己去网上下载了jdk 8,然后把jdk10.0.1换成jdk 8问题就解决了 网址:jdk下载网址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 重新运行后就没有报错了,希望能解决大家的问题 但其实我个人认为最好的解决的方法是在项目加个 

myeclipse运行tomcat报错Exception in thread &quot;main&quot; java.lang.OutOfMemoryError: PermGen space

将myeclipse所配置的tomcat的jdk进行设置:-Xms512m -Xmx512m -XX:MaxNewSize=512m -XX:MaxPermSize=512m,如下图:

Exception in thread &quot;main&quot; java.lang.ExceptionInInitializerError

Exception in thread "main" java.lang.ExceptionInInitializerErrorCaused by: java.util.MissingResourceException: Can't find bundle for base name javax.servlet.LocalStrings, locale zh_CN at java.util.ResourceBundle.throwMissingResourceException(Res

运行jar包时出现异常:Exception in thread &quot;main&quot; java.lang.ExceptionInInitializerError

/usr/local/java/jdk1.8.0_60/bin/java SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/local/jstorm-2.2.1/wait_deploy/test-jstorm-bolt.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar

dom4j使用xpath报异常 Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: org/jaxen/NamespaceContext

Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/NamespaceContext at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230 ) at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207) at org.dom4j.tree.Abstrac

xom报错 Exception in thread &quot;main&quot; java.net.UnknownHostException: file

Exception in thread "main" java.net.UnknownHostException: file at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.Socket.connect(Socket.java:579