java -jar 执行 eclipse export 的 jar 包报错处理
1. 错误1:打 jar 包执行,报错,找不到 类库的 jar 包
F:\>java -jar remoteLogin.jar
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/alibaba/fastjson/JSON
at com.diantusoft.LoginWindow.getFingerPrintFromDB(LoginWindow.java:819)
at com.diantusoft.LoginWindow.login(LoginWindow.java:630)
at com.diantusoft.LoginWindow.access$8(LoginWindow.java:577)
at com.diantusoft.LoginWindow$13.mouseClicked(LoginWindow.java:509)
at java.awt.Component.processMouseEvent(Component.java:6528)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4542)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:724)
at java.awt.EventQueue$4.run(EventQueue.java:722)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:721)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassNotFoundException: com.alibaba.fastjson.JSON
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
解决方法:Use Export -> Java -> Runnable JAR File instead Export -> Java -> JAR File on your project (right mouse click).
2. 错误2: Could not find main method from given launch configuration
原因:选错了 launch configuration,自然就找不到 main方法,选择时要选择那个包括 main 方法的 类作为 launch
3. 错误3:
public static ImageIcon getPicture2(String name) { ImageIcon icon = new ImageIcon(PictureUtil.class.getClassLoader() .getResource("com/diantusoft/image/" + name)); return icon; }
如下代码,eclipse export 导出 jar 包之后,执行 无法找到路径:
因为路径变成了如下的形式:file:/F:/remoteLogin.jar!/com/diantusoft/image/login_button.png
所以 java -jar remoteLogin.jar 执行时,是如法找到图片的。
解决方法:
private static PictureUtil instance = new PictureUtil(); private PictureUtil(){} public static PictureUtil getInstance(){ return instance; } public ImageIcon getPicture(String name){ URL url = this.getClass().getResource(name); if(url != null){ return new ImageIcon(url); } }
也就是使用 this.getClass().getResource() 来获取图片,就不会发生因路径变化找不到图片的问题。
相关文章
- Java核心技术卷I基础知识3.6.4 检测字符串是否相等
- MAVEN 打 JAR包 注意地方(怎么把依赖打到Jar)
- Java大顶和小顶
- Java项目(前端vue后台java微服务)在线考试系统(java+vue+springboot+mysql+maven)
- Java 8 排序的 10 个姿势,太秀了吧!同事直呼看不懂。。
- Java开发环境的搭建以及使用eclipse从头一步步创建java项目
- 【JAVA UI】HarmonyOS 定位的功能基本实现
- java中的变量
- 《Java程序员面试秘笈》—— 导读
- Java jar 在Windows上运行的方法
- java.util.concurrent简介
- Java 8新特性——default方法(defender方法)介绍
- Java中使用com.sun相关jar包出现编译错误,但是运行没有错误的解决方法和原因
- java中jar命令打包一个文件夹下的所有文件
- java -jar 设置日志位置
- Java虚拟机之类加载学习总结
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- java.lang.IllegalArgumentException: sheetName '' is invalid
- 【深入JAVA】java注解
- java Properties 键的顺序按照文件里的顺序排列
- 曹工说Spring Boot源码(25)-- Spring注解扫描的瑞士军刀,ASM + Java Instrumentation,顺便提提Jar包破解
- 什么是Java序列化,如何实现java序列化
- Java使用jxl.jar操作excel,合并单元格等
- Java 报错 Information:java: javacTask: 源发行版 8 需要目标发行版 1.8