smartinvoke入门系列3——程序的打包与单独运行当然,SmartInvoke程序要能够方便的打包成类似exe可执行文件的
smartinvoke入门系列3——程序的打包与单独运行
当然,SmartInvoke程序要能够方便的打包成类似exe可执行文件的形式才能算得上是一个真正的CS程序。
为了让SmartInvoke程序能够成功的打包运行,首先得在FirstWin.java入口类中添加一方法以指明程序所要加载的swf文件的路径。内容如下:
public String getMainSWF(){
??????? return "/FirstWin.swf";
}
该方法告诉SmartInvoke程序所需的swf文件为程序当前目录下的FirstWin.swf。
getMainSWF方法在这里可以返回相对于cn.smartinvoke.core.jar的相对路径,本地绝对路径,还有http地址。
注意该方法只是在程序打包导出的时候才使用,程序开发调试期间请把该方法注释掉。不然会导致调试程序无法运行。如果你不幸已经遇到这样的问题请重新启动eclipse.
?
右键First项目,选择导出 菜单,打开导出对话框,选择Java节点下的可运行的Jar文件节点。点击下一步,选择Jar文件加载后所要启动的java类,与Jar文件的存储位置,如下图:
?
?
?
点击完成按钮,会在C:\cc目录下生成First.jar文件,将First_项目生成的FirstWin.swf文件及所需的运行时动态链接库文件拷贝到First.jar所在目录,新建一内容为java –jar First.jar的
Run.bat批处理文件。双击该批处理文件就可以运行我们的第一个smartinvoke程序啦。
程序的目录结构如下图:
?
运行smartinvoke自带的示例
在flash builder安装目录下的cn.smartinvoke.libs目录下一Demo开头的.bat文件都是可运行示例。
?
?
at sun.reflect.NatiiveMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NatiiveMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclips.jdt.internal.jarinjarloader.jarRsrcLoader.main(jarRsrcLoader.java:56)
caused by:java.lang.NullPointerException
at cn.smartinvoke.gui.Environment.getLoaction(Unknown Source)
ar cn.smartinvoke.util.UIHelpMethod.getFullPath(Unknown Source)
at cn.smartinvoke.gui.shell.FlashShell.setAppPath(UnknownSource)
at cn.smartinvoke.core.SuperApp.init(Unknown Source)
at hvc.app.CollectionWin.<int>(CollectionWin.java:10)
at hvc.app.CollectionWin.main(CollecitonWin.java:19)
...5more
collectionWin.java
package hvc.app;
import org.eclipse.swt.widgets.Display;
import cn.smartinvoke.core.SuperApp;
import cn.smartinvoke.gui.shell.FlashShell;
public class CollectionWin extends SuperApp {
public CollectionWin(String[] args) {
this.init(args);
}
/**
* application main method
* @param args
*/
public static void main(String[] args) {
final Display display = new Display();
CollectionWin app =new CollectionWin(args);
FlashShell shell = app.getMainShell();
shell.setMinimumSize(600, 1000);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
public String getMainSWF()
{
return "/CollectionWin.swf";
}
}
第10行和第19行都是创建项目的时候自动生成的。打包之后报错是什么原因呢?请楼主指点下。qq 376987739
谢谢了