air java_Air 调用本地化java程序

最近在写一个客户端,使用的air但是其中要访问数据库,众所周知,air除了那个sqlite之外,是不能访问任何数据库的,只能借助于其它语言与数据库进行交互,所以这就会牵扯到air调用本地化java程序的问题,对于这个问题思考了半天,心想adobe干嘛不搞一个像java的jndi的东西,方便直接调用本地化的应用程序,后来想了想估计是担心软件移植的原因吧,不管这个了,在网上搜到的信息是,air是可以调用exe程序的,因此想要调用本地化java程序,可以将java打包成exe程序,然后给予air调用即可。

第一步,创建一个java项目,这里主要的功能就是创建一个文本,然后写点文字进去。源代码如下:

package com.file;

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

public class CreateFile {

public static void main(String[] args) {

//以创建文件为例

File file = new File("H:/createFile.txt");

PrintWriter pw;

try {

file.createNewFile();

pw = new PrintWriter(file);

pw.write("我是新创建的文件。。。。");

pw.close();

System.out.println("文件已经创建成功");

} catch (IOException e) {

e.printStackTrace();

}

}

}

好了,接下来就要进行打成jar包,直接用相关工具导出成jar包即可,需要注意的是,导出的时候不要忘记选择main类。

0818b9ca8b590ca3270a3433284dd417.png

生成jar文件如下图所示:

0818b9ca8b590ca3270a3433284dd417.png

下一步工作就是将jar打包成exe了,这里使用的工具是exe4j,exe4j运行效果如图:

出现一个欢迎界面,不要理它,直接next,

0818b9ca8b590ca3270a3433284dd417.png

选择“java  in exe”mode,再next

0818b9ca8b590ca3270a3433284dd417.png

输入以下你的应用的简称,和导出的路径,再next

0818b9ca8b590ca3270a3433284dd417.png

输入一下你生成的exe名称,再next

0818b9ca8b590ca3270a3433284dd417.png

点击右边的+号,添加一下你要加的jar包,(注:假如有第三方jar包,也可以加入进去),然后选择一下main  Class,如果选择main Class是空白的话,建议添加jar包时,使用相对路径,最好把jar包先放到你要导出的exe目录中。如相对路径为:./CreateFile.jar。

0818b9ca8b590ca3270a3433284dd417.png

下一步配置一下jdk的版本范围。

0818b9ca8b590ca3270a3433284dd417.png

再点击一下,Search  sequence,可以把自己的jre加入进去,这只是把目录名加进去了,在没有jvm的机器上还是不可以直接运行的。所以exe4j生成的exe并不能离开jvm。

0818b9ca8b590ca3270a3433284dd417.png

然后直接一路next就可以了,最后点击Exit,它会询问是否保存配置,我一般选择no。

0818b9ca8b590ca3270a3433284dd417.png

再接着打开生成exe的目录,看看里面的东西。

0818b9ca8b590ca3270a3433284dd417.png

Exe只有248kb,这个容量比jre7小多了吧。 你也可以点击运行一下,看看是否生成文件了。

下面说一下最后的阶段,就是air调用exe文件,网上已经有了讲述,这里只是简单地展示一下代码。

新建air项目,然后code代码如下:

xmlns:s="library://ns.adobe.com/flex/spark"

xmlns:mx="library://ns.adobe.com/flex/mx">

import mx.controls.Alert;

public function testExeFile():void{

//使用相对路径程序不能运行

var file:File = new File("D:/ShowTest/CreateFile.exe");

var nativeProcessStartupInfo:NativeProcessStartupInfo;

NativeApplication.nativeApplication.autoExit = true;

Alert.show(file.nativePath);

nativeProcessStartupInfo = new NativeProcessStartupInfo();

nativeProcessStartupInfo.executable = file;

var process:NativeProcess = new NativeProcess();

process.start(nativeProcessStartupInfo);

}

]]>

这里使用的是绝对路径,我在使用相对路径的时候,总是不成功,这个原因比较扯。

另外在TestAirExe-app.xml加入这样一句话

extendedDesktop

这句话的加入是为了避免一些不必要的错误。

先把H盘的createFile.txt删除,

0818b9ca8b590ca3270a3433284dd417.png

最后执行air程序,效果如下图:

0818b9ca8b590ca3270a3433284dd417.png

此前已经把H盘的createFile.txt删除了,此时又有了。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

注:这里只是简单地介绍了一下air与java的本地化调用,其实中间还可以涉及到调用exe的传参问题,java打成jar包后的相对路径问题等等,所幸这些问题在网上都是有答案可循,所以这些问题大部分都是可以解决的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值