java vb6通用加密解密_VB6编译javaWeb项目

效果

d2ede05503acf3d4a8a37b2dbe78d7f3.gif

最终还是调用javac命令编译源文件的,只不过调用javac通过CreatePipe、CreateProcess、ReadFile来完成.

CreatePipe

8d1c055554811edda898b5357f86a925.png

CreateProcessA

这个函数有点复杂,我还没有研究透彻.

d0c060264e341b0b14ced2534cac65db.png

ReadFile

用来从管道中读取数据

0a371ca70f8b869962ee3831c36f06ad.png

实现原理

首先不得不说javac的一些参数,在项目中,会用到不少jar包,在javac时,就需要指定其中的-extdirs参数.如JedisTest类中引入了Jedis包,如果单纯的使用javac ,那指定是不能通过编译的

f52de12a0ec9caf1a4d7ea2b24acec00.png

但是如果指明了jedis的jar路径后,就可以成功编译,

92048aacd0141b88f79d16ec4aa0dc61.png

但是对于Web项目,还需要servlet-api等,这些jar可在tomcat\lib下找到,所以,对于extdirs,可能要指明多个路径,使用;分割.

当面对成百上千的源文件是,javac提供了@这种方式来一次性编译

af63b11d2cd55b3007239e3361718deb.png

那又有新的问题,我们要遍历项目下所有的源文件,把他们的绝对路径都列举到一个文件中,最后把这个集合传递给javac

遍历生成有两个办法,使用dir(VB中的函数),但是dir函数貌似不支持直接递归,也就是在新的调用结束时,外层dir会使用上一次的处理结果,不是本层,导致出错.所以使用了FindNextFile、FindFirstFile函数.

51dfaeb07094077bdcac6379a6ce187f.png

其中的sJavaFilePathList数组用来保存java文件,通过遍历时Redim Preserve动态定义不断更新

遍历结束后,使用open函数输出到txt中.

f8d78c27727940371a95814101e952b4.png

在生成完java文件集合之后,拼接并执行javac命令

692127c39b27df2ac8d2ceba521cf4d6.png

下面是重点调用.

通过CreatePipe创建管道后,将hReadPipe和hWritePipe句柄传递给STARTUPINFO结构体,CreateProcessA和此结构体关联之后,此时就可以通过ReadFile不断读取结果了,直到为0

d2c067a751cdbde8020ed1393fbc4802.png

其中appendLog是模块中的方法,展示log

f010bf75d2d50cb523b140c084ee5dea.png

在第一个文本框中输入项目路径,第二个文本框是引入的jar地址

7c2427f328d2c456b2e59246c6571754.png

点击编译后在项目src下生成out和source文本,其中out则是class输出目录,source则是项目中所有java文件

55c2fe39ed3dd0b8083af1277df03d75.png

a3ee71ccfa0dba6c16c230589dc9d6c5.png

其实遍历还有一种更简单的方法,通过cmd的dir命令,指定/b/s,通过>输出到文本中

dir  /b/s *.java>source.txt

此命令递归并只列举所有.java文件

ea4432e66b2741c53c7c3c4dc8cd277d.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值