Air 调用本地化java程序

来源:互联网 发布:淘宝长款短袖 编辑:程序博客网 时间:2024/05/18 02:45

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


生成jar文件如下图所示:

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

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



选择“java  in exe ” mode,再next

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


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


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


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


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



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


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


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

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

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

<?xml version="1.0" encoding="utf-8"?><s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"    xmlns:s="library://ns.adobe.com/flex/spark"    xmlns:mx="library://ns.adobe.com/flex/mx"><fx:Declarations><!-- 将非可视元素(例如服务、值对象)放在此处 --></fx:Declarations><fx:Script><![CDATA[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);}]]></fx:Script><s:Button label="生成文件"  click="testExeFile()" /></s:WindowedApplication>

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

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

<supportedProfiles>extendedDesktop</supportedProfiles>

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

先把H盘的createFile.txt删除,


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



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



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




0 0
原创粉丝点击