首页 > 编程语言 >【错误记录】exe4j 打包程序无法设置 jar 包依赖的问题 ( 将源码 和 依赖库打包到同一个 jar 包中 )

【错误记录】exe4j 打包程序无法设置 jar 包依赖的问题 ( 将源码 和 依赖库打包到同一个 jar 包中 )

时间:2023-09-07 15:38:10浏览次数:64  
标签:lang 依赖 java Unknown jar Source 打包



文章目录

  • 一、问题描述
  • 二、解决方案







一、问题描述



在 【错误记录】IntelliJ IDEA 导出可执行 jar 包执行报错 ( java.lang.ClassNotFoundException | 打包时没有选择依赖库 ) 博客中遇到

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)

报错信息 , 这里就在打包时 , 采取了如下策略 ;

由于编译 IntelliJ IDEA 程序时 , 选择了 第二种 Jar 包打包方式 , 导致 主程序 与 依赖库是分开打包的 ;

【错误记录】exe4j 打包程序无法设置 jar 包依赖的问题 ( 将源码 和 依赖库打包到同一个 jar 包中 )_java

最终的主程序 与 依赖库 都是分开的 , 使用 主程序 时 , 必须额外配置依赖库 ;

【错误记录】exe4j 打包程序无法设置 jar 包依赖的问题 ( 将源码 和 依赖库打包到同一个 jar 包中 )_IntelliJ IDEA_02



这里有涉及到另外一个问题 , 想要使用 exe4j 将上述 jar 包打包成一个 Windows 程序 ,

将 Jar 包 与 Java 虚拟机打包在一起 , 捆绑成一个可执行的 exe 程序 ;

但是 exe4j 打包时 , 无法设置 jar 包的依赖库 , 只能设置一个 jar 包 ;



研究了下 exe4j 的文档 , 得到以下结论 :

【错误记录】exe4j 打包程序无法设置 jar 包依赖的问题 ( 将源码 和 依赖库打包到同一个 jar 包中 )_原力计划_03

  • exe4j 打包程序无法设置 jar 包依赖 , 只能设置一个 jni 相关的 native 的 .a 静态库 和 .so 动态库 依赖目录 ;
  • exe4j 也不能设置 java 命令执行参数 , 如果可以设置参数 , 可以通过 -classpath 选项设置 依赖库 ;
  • 还有一种方式可以通过命令行传入参数 , 但是打包的程序是一个途径界面程序 ;

这就比较尴尬了 , IntelliJ IDEA 打包出来的是一个 jar 包 + 若干 jar 依赖库 , 无法设置到 exe4j 中 ;



在 exe4j 执行时 , 会报错 , 无法找到依赖 , 自然也不能找到相关的类 ;

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)






二、解决方案



在 IntelliJ IDEA 中 , 导出 jar 包时 , 选择第一种方案设置 , 然后将所有的 java 源码打包在一起 ;

【错误记录】exe4j 打包程序无法设置 jar 包依赖的问题 ( 将源码 和 依赖库打包到同一个 jar 包中 )_jar_04

打包后的效果如下 , 所有的 Java 源码都打包在了一个 jar 包中 ;

【错误记录】exe4j 打包程序无法设置 jar 包依赖的问题 ( 将源码 和 依赖库打包到同一个 jar 包中 )_jar_05

注意 , 要删除 META-INF 目录下的签名文件 ;

【错误记录】exe4j 打包程序无法设置 jar 包依赖的问题 ( 将源码 和 依赖库打包到同一个 jar 包中 )_IntelliJ IDEA_06

【错误记录】IntelliJ IDEA 打包包含依赖库的 Jar 包执行报错 ( Invalid signature file digest for Manifest main attribute ) 博客中 , 遇到了签名文件出错的问题 ;


标签:lang,依赖,java,Unknown,jar,Source,打包
From: https://blog.51cto.com/u_14202100/7397601

相关文章

  • spring整合junit中使用到的依赖以及简单的测试案例演示
    2023-09-07注意:spring整合junit中的依赖要和spring-context的依赖版本相一致<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>......
  • springboot打包运行失败
    没有包含启动类的class添加mavenpom.xml;`org.springframework.bootspring-boot-maven-plugin${spring-boot.version}com.hidisp.HidispApplication<!--issue:SpringBoot-0.0.1-SNAPSHOT.jar中没有主清单属性 resolve:①注释掉,或者②将skip值改为......
  • [ 数据库原理 ] 函数依赖关系
    函数依赖概念函数依赖是指关系中属性间的对应关系。函数依赖是从数学角度来定义的,在关系中用来刻画关系各属性之间相互制约而又相互依赖的情况。函数依赖普遍存在于现实生活中,比如,描述一个学生的关系,可以有学号、姓名、所在系等多个属性,由于一个学号对应一个且仅一个学生,一个学......
  • 银河麒麟使用kickstart二次打包制作安装镜像ISO
    系统:银河麒麟V10SP2服务器:百信恒山TS02F-F30安装方式:服务器挂载ISO镜像进行安装 1、安装mkisofs软件包:#yuminstallgenisoimage2、将SP2系统文件拷贝到工作目录里:#mkdir/mnt/isodir#mkdir/mnt/buidiso#mount-oloopKylin-Server-10-SP2-x86-Release-Build......
  • vcpkg 与 GitHub 依赖关系图集成
    我们很高兴与大家分享,vcpkg有一项实验性功能,可以向GitHub依赖关系图提供数据。我们正在积极开发此功能,并希望听到您的反馈。如果您对当前功能有任何想法或希望看到进一步的改进,请告诉我们。如果你对vcpkg支持的依赖关系图启用的任何GitHub特性有反馈,也请告诉我们,我们会确保Git......
  • Unity 打包发布到 Web 踩坑
    重新打包发布后,网页内容没有更新。原因:浏览器有缓存机制,非首次访问网页时使用的可能是本地缓存数据。解决方案:手动清理下浏览器缓存参考文档:浏览器缓存机制   ......
  • 输出编译ota升级包时的打包参数
    build / tools/releasetools/common.pydefParseOptions(argv,docstring,extra_opts="",extra_long_opts=(),extra_option_handler=None):"""Parsetheoptionsinargvandreturn......
  • DI依赖注入
    一、构造器注入1)下标赋值<beanid="user"class="com.along.pojo.User"><constructor-argindex="0"value="along"/></bean>2)类型(不推荐)<beanid="user"class="com.along.pojo.User">......
  • maven插件之Dependency:analyze,去掉无用maven依赖
    前言完成新功能的开发后,在发包前组长告诉我要检查maven工程的依赖,并告诉我相关指令,此文记录一下使用方式正文简介maven官网之Dependency插件Dependency插件提供了操纵artifact的能力,可以复制以及拆包本地或远程仓库的artifact到指定地点。Dependency有很多的goal,这里介绍的是de......
  • D依赖倒置原则DIP
    Dependency-InversionPrinciple要依赖抽象,而不要依赖具体的实现,具体而言就是高层模块不依赖于底层模块,二者共同依赖于抽象。抽象不依赖于具体,具体依赖于抽象。定义高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。简单的说,依......