Jfianl项目命令行运行方法简介

yshumk 发布于 2016/03/04 23:43
阅读 291
收藏 2

Jfinal内嵌Jetty在测试环境测起来很爽,但是有时会临时想在非eclipse下跑,但是又不方便搞到tomcat(有时tomcat和jetty总是有各种微妙的差别,不知道大家有没碰到过),这时就需要把项目弄成直接java命令运行的方式了。

本来我是想要搞成打jar包,然后引入各种外部jar,之后跑起来的,但是因为Jfinal里面去找web.xml的方式可能没考虑到打在jar包里路径的表示方式差异,所以各种尝试不成功(当然主要原因是我菜~~~)

于是只好退而求其次搞成直接跑一堆web项目结构的class文件~

方法如下:

首先在启动项目的main方法里面应该是

JFinal.start("../..", Integer.valueOf(portStr), "/", 5);



而不是

类似在Eclipse下(maven项目的话)

JFinal.start("src/main/webapp", Integer.valueOf(portStr), "/", 5);



这样

然后导出项目,可以是Export-Web-WAR file 导出war包,也可以自行发挥~项目结构对头就好

然后解压出来,在项目根目录下建个启动脚本,

window下:

@title XX系统
@echo off 
if defined JAVA_HOME (
    echo 已安装JDK
) else (
echo ====================================
echo 请先安装JDK后再使用
echo ====================================
pause
exit
)
cd .\WEB-INF\classes
FOR %%F IN (..\lib\*.jar) DO call :addcp %%F
goto extlibe
:addcp
SET CLASSPATH=%CLASSPATH%;%1
goto :eof
:extlibe
##此处com.xxx.xxxxxx.config.FrameworkConfig必须是main方法所在的类全名
java com.xxx.xxxxxx.config.FrameworkConfig

pause



linux或mac下:

#!/bin/sh 
cd ./WEB-INF/classes
LIB_PATH=.
for i in ../lib/*.jar; do
LIB_PATH=${LIB_PATH}:$i
done

$JAVA_HOME/bin/java -server -Xmx1024m -XX:MaxDirectMemorySize=256M -verbose:gc -Djava.awt.headless=true -classpath .:$CLASSPATH:$LIB_PATH com.xxx.xxxxxx.config.FrameworkConfig



有其他需要的话自行发挥~

然后执行这个文件就欧了~~~

之前这块去请教波总@Jfinal ,波总让我找到方法了就分享下,但是因为一直没搞出直接跑jar的方法就一直没放出来,最近也没啥空去研究,抛砖引玉如果大家有需要就拿去,有好的方法也麻烦分享下~感谢~


加载中
0
护士的小黄瓜
护士的小黄瓜
mvn  tomcat:run
yshumk
yshumk
嗯嗯,感谢分享,用这种方式在调试时就用tomcat也行。我是正好之前有个小工具要发给每个人去用,每个人都开个“私服”那样,所以要搞成命令行的
0
JFinal
JFinal
非常感谢你的分享,这个的确是有很多人问过我怎么来做,有一定的需求 
yshumk
yshumk
44
0
tianxia007
tianxia007
JFinal.start("src/main/webapp", Integer.valueOf(portStr),"/",5);
完全可以啊,jar包更目录下放这文件夹就可以
yshumk
yshumk
肯定是可以啊,但是前提是你愿意打完包还自己手动去建这目录。web项目目录一般不是这结构
返回顶部
顶部