jfinal 4.8 打成 jar 部署 ,跑不起来

jfinal 4.8 ,之前 用的 tomcat 打包 , 现在想换成 jar包方式,

     打包成功之后 winds下 可以正常运行 , Linux 一直提示

             "请先修改 MAIN_CLASS 的值为你自己项目启动Class,然后再执行此脚本。"

 我想问下  打成 jar包后 ,我怎么找不到我的项目了 全是一些 依赖和配置文件 什么的

    但是 winds下 是可以 跑起来..

         Linux下 是还需要什么配置才可以跑起来么?

@jfinal

image.png

评论区

JFinal

2020-07-23 17:18

修改 jfinal.sh 中的 MAIN_CLASS 的值,提示已经给出很明确了, 天天都在用的,不会有啥问题

注意 linux 下的 .sh 脚本文件的换行字符是 \n , 而不能是 \r\n

文档中有过说明:
https://jfinal.com/doc/1-5

注意看上述文档中有关脚本使用的问题

Dirge

2020-07-24 09:01

@JFinal 嗯 是可以的, 我把MAIN_CLASS的值和判断的值写成一样的了,
还有 个问题就是 我可以看到的 项目路径么, 打包之后的项目 我怎么 找不到在哪了,全是一些 依赖和配置文件 什么的..

Dirge

2020-07-24 09:06

@JFinal 我看到了 是 lib 下面的jar包 ,项目就在jar里面....

JFinal

2020-07-24 11:37

@Dirge 浏览一下打包后的目录:
0:根目录下是启动脚本
1:config 下是配置文件
2:lib 下是依赖的 jar 包以及项目本身源码打成的 jar 包
3:webapp 下是 web 资源,例如 html、js、css、图片等等

这个结构几近完美,是经过多年经验总结与微调后的精心设计,你不可能找到比这个更爽的打包结构

JFinal

2020-07-24 11:44

我再多谈一点这个结构在安全性上的考虑,传统打成的 WAR 包这类方案,其配置文件与 jar 包会打到 webapp/WEB-INF 下面,例如:
webapp/WEB-INF/classes
webapp/WEB-INF/lib

而生产环境下很多都会使用 nginx 还对 webapp 下的 web 资源进行反向代理,nginx 中通常有下面一行配置:
root /my-project-path/webapp/

然后,恶意攻击者就可以通过在浏览器中输入 http://域名/WEB-INF/lib/xxx.jar 以及 http://域名/WEB-INF/classes/app-config.txt 下载你的 jar 包和配置文件了

你的数据库密码之类的也可以分分钟泄漏
你的 jar 包被下载以后可以被反编译,拿到你的业务源代码,进而可以进一步深入攻击

你得再配置 nginx 的 location 来阻止这种访问才能避掉这个坑

而 jfinal 的打包方式完全不存在这个问题,因为 config、lib 并没有放在 webapp 之下,极度安全

Dirge

2020-07-24 15:12

@JFinal 好的 好的 多谢波总 ,非常感谢!

JFinal

2020-07-24 15:29

@Dirge 连启动脚本为啥不用一个 bin 子目录来放也是有考虑的,你可以思考一下这里头的好处

Dirge

2020-07-24 17:41

@JFinal 嗯嗯 好的 多谢多谢...

热门反馈

扫码入社