「java程序双击运行」java双击事件触发
今天给各位分享java程序双击运行的知识,其中也会对java双击事件触发进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、怎么直接运行java程序
- 2、java的程序要怎样才能双击就可运行(不用在dos下输入javac、java命令),
- 3、java打包后双击可以运行吗
- 4、java程序怎么实现的双击直接运行
- 5、JAVA程序怎样做让它双击某个文件就能运行
- 6、java编的程序如何转换成双击就能打开
怎么直接运行java程序
直接运行即双击鼠标运行的方法有二
一.手动打jar包法
1.首先得到你编译后的所有class文件,并讲所有文件放到JDK环境能够识别的目录或盘符下
2.在"运行"框里输入cmd进入"命令行模式"(DOS),进入你存放class文件的目录或盘符,输入:"jar_cfm_任意名字.jar_任意名字.mf_第一CLASS文件.class_第二个CLASS文件.class ....最后一个CLASS文件.class" 按回车得到"任意名字.jar"文件.
3.mf文件是清单文件,向JVM提供程序的相关信息,最简单的格式如下:
任意名字.mf
Manifest-Version:_1.0
Main-Class:_main方法所在类的类名
Created-By:_1.4(Sun Microsystem Inc.)
二.IDE打jar包法
流行的IDE例如eclipse,JBuilder都提供有打包成jar的选项,只需要找到此选项即可.
注:以上文字中的"_"代表空格
java的程序要怎样才能双击就可运行(不用在dos下输入javac、java命令),
首先java程序运行需要的是jre (java运行时环境),并不是jdk
创建可执行的 JAR 文件包
制作一个可执行的 JAR 文件包来发布你的程序是 JAR 文件包最典型的用法。
Java 程序是由若干个 .class 文件组成的。这些 .class 文件必须根据它们所属的包不同而分级分目录存放;运
行前需要把所有用到的包的根目录指定给 CLASSPATH 环境变量或者 java 命令的 -cp 参数;运行时还要到控制台下
去使用 java 命令来运行,如果需要直接双击运行必须写 Windows 的批处理文件 (.bat) 或者 Linux 的 Shell 程序。
因此,许多人说,Java 是一种方便开发者苦了用户的程序设计语言。
其实不然,如果开发者能够制作一个可执行的 JAR 文件包交给用户,那么用户使用起来就方便了。在 Windows 下
安装 JRE (Java Runtime Environment) 的时候,安装文件会将 .jar 文件映射给 javaw.exe 打开。那么,对于一个
可执行的 JAR 文件包,用户只需要双击它就可以运行程序了,和阅读 .chm 文档一样方便 (.chm 文档默认是由
hh.exe 打开的)。那么,现在的关键,就是如何来创建这个可执行的 JAR 文件包。
创建可执行的 JAR 文件包,需要使用带 cvfm 参数的 jar 命令,同样以上述 test 目录为例,命令如下:
jar cvfm test.jar manifest.mf test
这里 test.jar 和 manifest.mf 两个文件,分别是对应的参数 f 和 m,其重头戏在 manifest.mf。因为要创建可
执行的 JAR 文件包,光靠指定一个 manifest.mf 文件是不够的,因为 MANIFEST 是 JAR 文件包的特征,可执行的
JAR 文件包和不可执行的 JAR 文件包都包含 MANIFEST。关键在于可执行 JAR 文件包的 MANIFEST,其内容包含了
Main-Class 一项。这在 MANIFEST 中书写格式如下:
Main-Class: 可执行主类全名(包含包名)
例如,假设上例中的 Test.class 是属于 test 包的,而且是可执行的类
(定义了 public static void main(String[]) 方法),那么这个 manifest.mf 可以编辑如下:
Main-Class: test.Test 回车
这个 manifest.mf 可以放在任何位置,也可以是其它的文件名,只需要有 Main-Class: test.Test 一行,且该
行以一个回车符结束即可。创建了 manifest.mf 文件之后,我们的目录结构变为:
==
|-- test
| `-- Test.class
`-- manifest.mf
这时候,需要到 test 目录的上级目录中去使用 jar 命令来创建 JAR 文件包。也就是在目录树中使用“==”表
示的那个目录中,使用如下命令:
jar cvfm test.jar manifest.mf test
之后在“==”目录中创建了 test.jar,这个 test.jar 就是执行的 JAR 文件包。运行时只需要使用
java -jar test.jar 命令即可。
需要注意的是,创建的 JAR 文件包中需要包含完整的、与 Java 程序的包结构对应的目录结构,就像上例一样。
而 Main-Class 指定的类,也必须是完整的、包含包路径的类名,如上例的 test.Test;而且在没有打成 JAR 文件包
之前可以使用 java 类名 来运行这个类,即在上例中 java test.Test 是可以正确运行的 (当然要在 CLASSPATH
正确的情况下)。
(忘记从哪儿下的了!!可能不太全!!)
java打包后双击可以运行吗
现在的windows都会装j2se的解析器的,所以这就是说,如果打包成jar文件,用这个j2se解析器打开就可以双击运行。**********************下面是jar包的打包方法************************1.建立MANIFEST.MF (在class文件根目录下) 以下内容为文件的基本内容 ================== Manifest-Version: 1.0 Main-Class: a(主类的路径) Created-By: Abc Company (创建人名字) ================== 2.打包 按照lz给的条件 在class文件目录下执行 jar cvfm classes.jar MANIFEST.MF *.* 以上命令将class下所有文件打包到classes.jar,生成在class目录下 3.执行 windows下双击就可以执行。-----------------------------------这个是我推荐的方案,因为简单。**************************MANIFEST.MF 文件详解**************************打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内容,先来看struts.jar中包含的MANIFEST.MF文件内容: Manifest-Version: 1.0Created-By: Apache Ant 1.5.1Extension-Name: Struts FrameworkSpecification-Title: Struts FrameworkSpecification-Vendor: Apache Software FoundationSpecification-Version: 1.1Implementation-Title: Struts FrameworkImplementation-Vendor: Apache Software FoundationImplementation-Vendor-Id: org.apacheImplementation-Version: 1.1Class-Path: commons-beanutils.jar commons-collections.jar commons-digester.jar commons-logging.jar commons-validator.jar jakarta-oro.jar struts-legacy.jar如果我们把MANIFEST中的配置信息进行分类,可以归纳出下面几个大类:一. 一般属性1. Manifest-Version 用来定义manifest文件的版本,例如:Manifest-Version: 1.02. Created-By 声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:Created-By: Apache Ant 1.5.13. Signature-Version 定义jar文件的签名版本4. Class-Path 应用程序或者类装载器使用该值来构建内部的类搜索路径二. 应用程序相关属性1. Main-Class 定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件。 三. 小程序(Applet)相关属性1. Extendsion-List 该属性指定了小程序需要的扩展信息列表,列表中的每个名字对应以下的属性2. extension-Extension-Name3. extension-Specification-Version4. extension-Implementation-Version5. extension-Implementation-Vendor-Id5. extension-Implementation-URL四. 扩展标识属性1. Extension-Name 该属性定义了jar文件的标识,例如Extension-Name: Struts Framework 五. 包扩展属性 1. Implementation-Title 定义了扩展实现的标题2. Implementation-Version 定义扩展实现的版本3. Implementation-Vendor 定义扩展实现的组织 4. Implementation-Vendor-Id 定义扩展实现的组织的标识5. Implementation-URL : 定义该扩展包的下载地址(URL)6. Specification-Title 定义扩展规范的标题7. Specification-Version 定义扩展规范的版本8. Specification-Vendor 声明了维护该规范的组织9. Sealed 定义jar文件是否封存,值可以是true或者false (这点我还不是很理解)六. 签名相关属性签名方面的属性我们可以来参照JavaMail所提供的mail.jar中的一段Name: javax/mail/Address.classDigest-Algorithms: SHA MD5 SHA-Digest: AjR7RqnN//cdYGouxbd06mSVfI4=MD5-Digest: ZnTIQ2aQAtSNIOWXI1pQpw==这段内容定义类签名的类名、计算摘要的算法名以及对应的摘要内容(使用BASE64方法进行编码)七.自定义属性除了前面提到的一些属性外,你也可以在MANIFEST.MF中增加自己的属性以及响应的值,例如J2ME程序jar包中就可能包含着如下信息MicroEdition-Configuration: CLDC-1.0MIDlet-Name: J2ME_MOBBER Midlet SuiteMIDlet-Info-URL: : /icon.pngMIDlet-Vendor: Midlet Suite VendorMIDlet-1: mobber,/icon.png,mobberMIDlet-Version: 1.0.0MicroEdition-Profile: MIDP-1.0MIDlet-Description: Communicator关键在于我们怎么来读取这些信息呢?其实很简单,JDK给我们提供了用于处理这些信息的API,详细的信息请见java.util.jar包中,我们可以通过给JarFile传递一个jar文件的路径,然后调用JarFile的getManifest方法来获取Manifest信息。****************************打包.exe文件的方案**************************** 对于windows用户来说,将java应用程序打包成.exe最好不过了,现在我介绍两个方法。1、用专业的应用程序打包工具InstallAnywhere,这个软件几乎能在所有平台上运行,当然你要下载到你需要的那个平台的啦!而且它也能打包成各个平台的安装程序。2、用MINI的免费的工具javalunch,JavaLauncher的下载网址是:下载下来的文件是一个名JavaLauncher.zip的压缩包,解压后的目录结构:l source目录包含了JavaLauncher的源程序,是用C语言写的l changes.txt是新版的修改说明l launch.exe是主程序l launcher.cfg是配置文件l readme.txt是一些说明和示例我们只需要launch.exe、launcher.cfg两个文件,将这两个文件复制到打包文件所在的目录。launcher.cfg是一个仅三行内容的文本文件,将它修改如下:.\java1.4.2\jre\bin\javaw.exe -jar myswt.jarl 第一行设置指向JAR包myswt.jar的目录,由于launch.exe和myswt.jar同在一个目录,所以用"."即当前目录。l 第二行设置指向jre\bin\javaw.exe的路径。配置好launcher.cfg后,双击launch.exe即可运行java应用程序。如果仔佃研究eclipse的启动方式,发现eclipse和JavaLauncher的原理一样:eclipse.exe相当于launch.exe,startup.jar相当于myswt.jar。只不过eclipse.exe不象launch.exe要具有通用性,所以它没有*.cfg这样的配置文件,而是将启动信息固化在eclipse.exe中。另:美化图标launch.exe文件的图标太单调了,让我们给它换个好看点的。换程序的图标需要用到一个免费的软件:Resource Hacker,它有中文版,下载网址是:由于这个软件有中文版的,在这里我就不多说了,挺简单的。 ------------------------写了这么一坨,我没看完。没研究这个工具的心情。 ******************************插件实现.exe文件导出**************************** 一 JSmooth 1.出品 Jsmooth,Sourceforge.net 2. 类型 free 3. 下载 . 步骤 a)利用Eclipse将所需要的主类打成可独立运行的jar包,注意添加manifest属性和MainClass。 b)新建一个Jsmooth工程 c) 在sketlon中选择“Console“ 或者 “Windowed“ d) 在Executable中的配置: i. Executable Binary:填写目的输出源的名称。如test.exe. ii. Executable Icon :选择一个好看点的图标 iii. Current Driectory :.(表示当前工程目录,当然也可行换成别的,As you wish.) e) 在Application中的配置: i. Classpath:选中我们所生成的jar包以及运行该jar文件所需要的类库 ii. Main-Class:选中我们所需要运行的主类。 iii. 可选项Use an embedded jar:运行该exe时可能需要到的类库(这里只能有一个类库)。 f) 在JVM Selection中的配置: i. Minimum JVM Version:写一个需要运行该程序所需的最低的就JVM的版本,比如1.4 g) Compile:OK,编译成功后,在你的输出目录上就会有一个崭新的exe程序了。Just enjoy it. 二 exe4J 1. 出品 ej-technologies 2.类型 Shared software,needs license 3.下载 . 步骤 a) 利用Eclipse将所需要的主类打成可独立运行的jar包,注意添加manifest属性和MainClass。 b) 新建一个exe4j工程 c) 选择“JAR in exe“ mode d) 在Configure application中的配置: i. Short name:随便写. ii. Ourput Driectory :选择输出路径。 e) 在Configure Executable中的配置: i. Executable type: 有三个选项,图形,控制台.或服务。从简单点开始吧,这里我们选console ii. Executable name:填写目的输出源的名称。如test.exe iii. Icon file:exe图标文件,但必须是.ico文件 f) 在Configure Java invocation中的配置: i. Classpath:选中我们所生成的jar包以及运行该jar文件所需要的类库 ii. Main-Class:选中我们所需要运行的主类。 iii.Arguments(可选项):输入参数。我们这里暂不需要。 g)在Configure JRE中的配置: i. Minimum Version:写一个需要运行该程序所需的最低的就JVM的版本,比如1.4 h) 一直next,对于所遇到的步骤选项都默认,直到finish:OK。编译成功后,在你的输出目录上就会有一个崭新的exe程序了。Just enjoy it. 三 总结和比较 由Java生成exe的工具还有很多,上面两种是我个人觉得用起来觉得比较方便的。两者的原理基本相同,但具体用起来还是有一点点不太一样的: 1.相同点 a) 最大的相同点当然是他们原理是互通的。都是通过将可运行的java程序打成可执行的jar包。再作转换。 b) 所生成的exe可执行程序,需要在装有比minimum version高的JVM环境下运行。 2. 不同点 a) 生成exe的时候,如果想要exe只需要pure JVM的环境(不需要第三方的类库)就可以运行的话。在JSmooth需要将所有的用到的第三方类库压缩成一个jar包(因为它有个embeded jar的选项),这就比较麻烦,因为当需要的jar多于一个时候,就需要将这些jar包先用jar –xvf 解压缩,在用jar –cvf重新制作新的jar文件,再放到embeded jar选项中去;而exe4J则会把classppath中所用到的jar包也会编译到exe中去。 b) JSmooth是免费的;而exe4J是共享软件,需要注册,否则在执行exe的时候会弹出很惹人烦的提示框。 c)ico文件的选择:exe4J要求严格的ico文件,而JSmooth则可以兼容jpg等其他各式的图片。 以上为转的
java程序怎么实现的双击直接运行
要想双击运行,需要将编译后的程序打包成Jar包,这样只要使用者电脑上装了JRE并且jar文件默认关联到JRE。
这样jar文件就会显示为Java图标并且双击会自动运行。
关于jar包深入了解可以搜一下jar包格式方面信息,主要是主类名称和类路径的设置。
还有一种方式是把jar包再打包为EXE文件(仅限Windows下使用),无特殊理由不推荐。
JAVA程序怎样做让它双击某个文件就能运行
^^java教程^^《制作可执行JAR》本文阐述了如何把一个不可执行的JAVAArchive(JAR)文件变成可执行,而不用直接操作manifest文件。你会学到写出短小的一个程序,通过运行java-jar命令或在像windows一样的操作系统里面用双击鼠标运行任何JAR文件。
你可以很容易地把应用程序的一整套class文件和资源文件打包到一个JAR中。事实上这就是jar文件存在的一个目的。另外一个目的就是让用户能很容易地执行被打包到jar文件里面的应用程序。那么为什么jar文件仅仅作为文件在整个java里面占据了次要的地位,而本地执行则被忽视?
要执行一个jar文件,你可以使用java命令的-jar选项。举一个例子来说,假如你有个名叫myjar.jar的文件。这个jar是可以运行的,你可以运行它:java-jarmyjar.jar.另外一个办法就是,当JavaRuntimeEnvironment(JRE)已经被安装到一个像windows的操作系统上,将jar文件与JVM关联(关联java.exe跟jar文件)在一起你就可以通过双击jar来运行这个应用程序。当然,jar文件必须是可执行的。
现在的问题是:如何做一个可以执行的jar?
manifest文件以及Main-class入口
在大多数jar中,都在一个叫META-INF的目录里面保存了一个叫MANIFEST.MF的文件。那个文件里面,
包含了一个特殊表项名字叫Main-Class,告诉java-jar命令应该执行哪个class.
问题是你必须为manifest文件手工加入适当表项,而且必须在一定的位置和用一定的格式。不幸的是,不是每个人都喜欢打开写字板编辑配置文件。
让API帮你完成任务
自从java1.2发布以来,一个叫java.uil.jar包的出现,让你能够方便处理jar文件。(注意:该包基于java.util.zip)特别地,jar包让你通过Mainfest类,可以容易操作那些manifest文件.
就让我们用这个API写一个程序吧。首先,这个程序必须知道三样东西:
1。我们要使之可运行的jar文件。
2。运行jar的主类(这个类必须包含在jar中)。
3。输出新jar文件的文件名,因为我们不能简单地覆盖原来的文件。
编写程序
上面列表的三点要求将组成我们的程序的参数。现在,让我们为这个程序选择一个适当的名字。
MakeJarRunnable听起来觉得怎样?
为main方法检查参数
假设我们的main方法入口点是一个标准的main(String[])方法。我们应该这样检查程序的参数:
if(args.length!=3){
System.out.println("Usage:MakeJarRunnable" "jarfileMain-Classoutput");
System.exit(0);
}
请注意参数列表是如何描述的,因为这在以下代码中是很重要的。参数的次序和内容不是固定的;
然而,如果你要改变他们的话,要记住响应修改其他代码。
访问jar和jar的manifest文件
第一,我们必须创建一些了解jar和manifest的对象:
//CreatetheJarInputStreamobject,andgetitsmanifest
JarInputStreamjarIn=newJarInputStream(newFileInputStream(args[0]));
Manifestmanifest=jarIn.getManifest();
if(manifest==null){
//Thiswillhappenifnomanifestexists
manifest=newManifest();
}
设置Main-Class属性
我们把Main-Class入口放到manifest文件的main属性部分。一旦从manifest对象获得这个属性,就可以设置需要的mainclass。然而,如果main-Class属性已经存在原来的jar当中又如何呢?这里我们只是简单地输出一个警告然后退出。我们能加入一个命令行参数告诉程序使用新的值,而代替了旧的那个:
Attributesa=manifest.getMainAttributes();
StringoldMainClass=a.putValue("Main-Class",args[1]);
//Ifanoldvalueexists,telltheuserandexit
if(oldMainClass!=null){
System.out.println("Warning:oldMain-Classvalueis:"
oldMainClass);
System.exit(1);
}
输出新的JAR
我们需要创建一个新的JAR文件,所以我们必须使用JarOutputStream类。注意:
我们必须确定我们不用跟输入文件相同的名字作为输出文件的名字。还有一个方案就是,程序应该考虑到一种情况,就是两个jar文件都是相同的,促使用户覆盖原来的文件,如果他愿意这么做的话。然而,我在保留了这一点,作为读者的一个练习。从如下代码开始:
System.out.println("Writingto" args[2] "...");
JarOutputStreamjarOut=newJarOutputStream(newFileOutputStream(args[2]),manifest);
我们必须从输入JAR写每个表项到输出的JAR,所以迭代每个表项:
//Createareadbuffertotransferdatafromtheinput
byte[]buf=newbyte[4096];
//Iteratetheentries
JarEntryentry;
while((entry=jarIn.getNextJarEntry())!=null){
//ExcludethemanifestfilefromtheoldJAR
if("META-INF/MANIFEST.MF".equals(entry.getName()))continue;
//WritetheentrytotheoutputJAR
jarOut.putNextEntry(entry);
intread;
while((read=jarIn.read(buf))!=-1){
jarOut.write(buf,0,read);
}
jarOut.closeEntry();
}
//Flushandcloseallthestreams
jarOut.flush();
jarOut.close();
jarIn.close();
完成程序
当然,我们必须把这些代码放到一个类的main方法里面,并且需要一大堆import代码。完整程序:
程序使用例子
让我们把这个程序应用到一个例子里面来。假设你有一个应用程序,该程序的入口点是一个叫HelloRunnableWorld的类,再假设你已经创建了一个jar叫myjar.jar,包含了整个程序。运行MakeJarRunnable:
javaMakeJarRunnablemyjar.jarHelloRunnableWorldmyjar_r.jar
正如前面提到的,注意一下我的参数顺序。如果你忘记了顺序,没有参数运行一下程序,它会响应出现一个用法提示信息。
尝试对myjar.jar运行java-jar命令。然后对myjar_r.jar。注意区别不同!好了,你完成了这一切了,浏览一下每个jar的manifest文件(META-INF/MANIFEST.MF)
java编的程序如何转换成双击就能打开
要想双击运行,需要将编译后的程序打包成Jar包,这样只要使用者电脑上装了JRE并且jar文件默认关联到JRE。
这样jar文件就会显示为Java图标并且双击会自动运行。
关于jar包深入了解可以搜一下jar包格式方面信息,主要是主类名称和类路径的设置。
还有一种方式是把jar包再打包为EXE文件(仅限Windows下使用),无特殊理由不推荐。
关于java程序双击运行和java双击事件触发的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-20,除非注明,否则均为
原创文章,转载请注明出处。