java.lang.NoClassDefFoundError: Could not initialize class org.xxxxx.xxx.OfficeView解决办法

一、出现的问题

最近在修改之前别人写的代码的时候出现了一个 NoClassDefFoundError 的异常。出现报错的地方是自定义的工具类,调用了一个静态的方法。结果在系统运行的时候就出现找不到类定义的错误

	public class OfficeView 
		static{
			String officeHome = getOfficeHome();
			logger.info("open office path NOT Found"+officeHome);
			config = new DefaultOfficeManagerConfiguration();
			config.setOfficeHome(officeHome);
			officeManager = config.buildOfficeManager();
			officeManager.start();
		}
		public static void converSWF(String filePath){
		// 具体代码就不贴了
		}
	}

    // 调用
    OfficeView.converSWF(outPath);

在执行 OfficeView.converSWF(outPath); 的时候就出现了“未找到类定义错误
”,但是代码本身并没有问题,也就是说在代码编译期是没有错误的,而是在代码运行期间出的错误。代码出现错误是因为在static的静态块中初始化了一个引用的对象,而这个对象被没有没创建就被拿来使用了,所以导致这个对象没有“类定义成功”(反正我是这么理解的)。

二、解决方案

我的方案很简单,将static块中声明的所有内容全部放到构造方法中,然后将converSWF 的静态方法,转换成普通方法,通过对象的去调用,Ok ,问题得到解决,一大堆的理论可以参考https://blog.csdn.net/deniro_li/article/details/82018648

	public OfficeView() {
		String officeHome = getOfficeHome();
		logger.info("open office path NOT Found"+officeHome);
		config = new DefaultOfficeManagerConfiguration();
		config.setOfficeHome(officeHome);
		officeManager = config.buildOfficeManager();
		officeManager.start();
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值