java如何调用matlab打成的jar包?
1个回答
展开全部
一、Java程序的打包基本上分两部分,一部分是一般程序的打包,另一部分就是特殊的插件打包了,我们只注重一般程序的打包,插件的打包方法我们不研究,毕竟没几个人搞插件开发。 二、jar运行的时候,它在怎么工作呢?了解这个是很重要的,知道这个以后,你就明白为什么我们需要这个文件、需要哪个文件,所以要仔细看这部分。 简单的说:双击jar文件->jar会读取manifest.mf(或者以mf为后缀的)这个打包清单->清单里有主类名和运行需要的库->根据这些信息jar就可以开始运行里面的java程序了->当有和系统进行交互的时候(比如swt需要系统的界面窗口信息,如果没有和系统进行信息交互则不必包含系统的库文件,其实那个时候你也没有需要的库文件),我们就要读取系统的库文件,调用系统的东西,所以我们要把系统的库函数连接文件(***.dll)包括进来。 这些就是jar的工作内部过程,那么下面我们就满足它的要求,创建它。 三、立即开工1、第一步,创建好你的swt程序,我们以这个为例,我们不避讳任何为题,因为这个包含的比较全面,基本问题都遇到了,所以你要先创建一个简单的swt程序,例如一个简单的对话框Swttest.java。2、下面要做第二步,写好你的配置文件,取名为manifest.mf(名字随便,后缀为mf即可)具体格式: Manifest-Version: 1.0Main-Class: SwttestClass-Path: ./lib/swt.jar ./lib/runtime.jar说明:第一行的意思是指定清单文件的版本号,不同版本的清单文件格式是稍有不同的,所以为了让jar读取正确的数据,我们必须指定它的格式,当然你也可以换取其他版本,比如2.0等,但是格式要稍微变化一下,这里不详细介绍了。第二行的意思是指定主程序的类的入口,主类都明白吧,就是包含主函数的类,把这个类写上,jar就会从这个类开始执行。第三行的意思是由于我们要独立运行,所以我们要把程序执行所需要的环境模拟出来,而这些包就是需要的函数和同文件等,runtime.jar时必须写的,swt.jar不一定,如果你是一般的程序,没有swt的事儿,那么这个就不用。 3、第三步用jar生成结果,jar是一个生成jar包的命令,在命令行下输入jar或jar –help 会出现: 用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...
选项:
-c 创建新的存档
-t 列出存档内容的列表
-x 展开存档中的命名的(或所有的〕文件
-u 更新已存在的存档
-v 生成详细输出到标准输出上
-f 指定存档文件名
-m 包含来自标明文件的标明信息
-0 只存储方式;未用ZIP压缩格式
-M 不产生所有项的清单(manifest〕文件
-i 为指定的jar文件产生索引信息
-C 改变到指定的目录,并且包含下列文件:
如果一个文件名是一个目录,它将被递归处理。
清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。 示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有
文件存档到一个名为 'classes.jar' 的存档文件中:
jar cvfm classes.jar mymanifest -C foo/ . 知道了jar命令的用法,我们开始打包我们的文件,我们不用其他工具,就用jdk自带的jar打包我们的东西,这样我们可以更加独立的进行工作。 假设我现在有一个简单的helloworld程序,主类是hello。 方法一:让程序自动生成manifest.mf文件jar cvf test.jar hello.class执行语句后生成一个包,然后我们改动一下里面的文件。加一句:Main-Class:(空格)hello然后压缩回jar文件,执行即可。 方法二:用我们自己写的manifest.mf先写出我们自己的manifest.mf文件jar cfm test.jar manifest.mf hello.class 注意:如果有内部类,不用写内部类,java会自己根据主类找出你的其他类,只要把他们的class文件全部打包进来就可以了。如果有绝对路径的东西,例如javax.swing.ImageIcon icon = new javax.swing.ImageIcon("1.gif");那么打包后的程序将不能找到这个图片, 因为它引用了一个物理路径的图片, 它应该改成这样:javax.swing.ImageIcon icon = new javax.swing.ImageIcon(getClass().getResource("1.gif")); 根据这两个方法,基本上我们日常大部分的操作都可以进行了。
选项:
-c 创建新的存档
-t 列出存档内容的列表
-x 展开存档中的命名的(或所有的〕文件
-u 更新已存在的存档
-v 生成详细输出到标准输出上
-f 指定存档文件名
-m 包含来自标明文件的标明信息
-0 只存储方式;未用ZIP压缩格式
-M 不产生所有项的清单(manifest〕文件
-i 为指定的jar文件产生索引信息
-C 改变到指定的目录,并且包含下列文件:
如果一个文件名是一个目录,它将被递归处理。
清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。 示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有
文件存档到一个名为 'classes.jar' 的存档文件中:
jar cvfm classes.jar mymanifest -C foo/ . 知道了jar命令的用法,我们开始打包我们的文件,我们不用其他工具,就用jdk自带的jar打包我们的东西,这样我们可以更加独立的进行工作。 假设我现在有一个简单的helloworld程序,主类是hello。 方法一:让程序自动生成manifest.mf文件jar cvf test.jar hello.class执行语句后生成一个包,然后我们改动一下里面的文件。加一句:Main-Class:(空格)hello然后压缩回jar文件,执行即可。 方法二:用我们自己写的manifest.mf先写出我们自己的manifest.mf文件jar cfm test.jar manifest.mf hello.class 注意:如果有内部类,不用写内部类,java会自己根据主类找出你的其他类,只要把他们的class文件全部打包进来就可以了。如果有绝对路径的东西,例如javax.swing.ImageIcon icon = new javax.swing.ImageIcon("1.gif");那么打包后的程序将不能找到这个图片, 因为它引用了一个物理路径的图片, 它应该改成这样:javax.swing.ImageIcon icon = new javax.swing.ImageIcon(getClass().getResource("1.gif")); 根据这两个方法,基本上我们日常大部分的操作都可以进行了。
追问
能用操作界面演示一下吗?新手,有的地方看不懂
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询