请教问题,我把springboot打包的jar放到了res目录下,运行后可以正常访问 http://localhost:8082/user/find/1,点击发布后生成exe文件,当我把jar删除后,在启动exe就找不到jar了,是不是没有把该jar打包到exe中?怎么解决
//运行 jar 程序
import java;
import console;
/*
实际上调用Java虚拟机,
并且调用 main函数也可以运行 jar 程序,例如:
import java;
java.addClassPath("~\lib\java\yuiCompressor\.res\yuicompressor.jar")
var jvm = java();
YUICompressor = jvm.import( "com.yahoo.platform.yui.compressor.YUICompressor");
var ret = YUICompressor.main({"d:\test.js", "-o","d:\testmin.js"})
但是这样运行有一个问题, jar中的 main 函数通常会假设自己是一个独立进程,
这样例如上面的 YUICompressor ,他在出错时就会调用 System.exit() 关闭当前进程.
对于这类程序就可以考虑用下面的方法创建子进程,关闭子进程不会影响到父进程
*/
var prcs = java.popenProcess(
"-verbose:class",//记录类载入信息
"-jar",//运行jar
io.fullpath( "D:/cqc-service-provider-0.0.1-SNAPSHOT.jar" )
);
var tOutBuffer = {};
for( all,out,err in prcs.each() ){
console.log( out,err );
table.push( tOutBuffer,all);
}
//在输出结果中搜索类加载信息
var outBuffer = string.join( tOutBuffer );
var logClass = {}
for classPath,filePath in string.gmatch(outBuffer
,"\[Loaded\s+(.+?)\s+from\s+([^\]]+)" ) {
logClass[classPath] = filePath;
}
//这个就是得到的结果了
for(classPath,filePath in logClass){
console.log(classPath)
console.log( " =>",fsys.shortpath(filePath),'\n' )
}
console.pause();
在发布 Spring Boot 应用程序时,需要使用 Maven 或 Gradle 构建可执行 jar 包,将所有依赖项(包括 Spring Boot 库)打包到 jar 文件中并在运行时使用。因此,可以将生成的 jar 文件单独放置到某个目录下并单独运行,不需要在原始开发项目中启动该 jar 文件。
在使用 exe4j 等工具生成 Windows 可执行文件时,需要确保将包含 Spring Boot 应用程序的 jar 文件打包到 exe 中,否则应用程序将无法启动或无法找到 jar 文件。可以通过以下方法解决这个问题:
D:\myproject\myapp.jar
注意这里使用的是绝对路径指向 myapp.jar 的位置。确保该 jar 文件已成功打包到 Windows 可执行文件中。
设置 "Main Class" 选项卡中的 Spring Boot 应用程序的主类,例如 com.example.myapp.MyApplicatoin 。
将 exe 工具运行时的工作目录 (Working Directory) 设置为包含 Spring Boot 应用程序 jar 文件的目录时,Spring Boot 应用程序可以正确地从 exe 文件夹中的 jar 文件加载依赖项,并可以正常运行。
该回答引用GPTᴼᴾᴱᴺᴬᴵ
在生成的exe文件中不会自动将jar文件打包进去,需要手动将jar文件复制到生成的exe文件所在的目录下,然后在exe文件中设置启动命令时,指定jar文件的路径,例如:
java -jar D:/cqc-service-provider-0.0.1-SNAPSHOT.jar
在这个命令中,D:/cqc-service-provider-0.0.1-SNAPSHOT.jar 是jar文件的完整路径。你可以将jar文件复制到exe文件所在的目录下,然后修改exe文件的启动命令,让其指向复制后的jar文件路径。