Java技巧:在清单里设置主类

你的用户运行Javaapplications时会遇到困难吗?你可以创建一个Windows的BAT文件或UNIX的SH文件来帮助他调用application。但是如果你有GUI,那么你就有比这简单得多的办法来解决这个问题了。 

在许多现代的桌面上,.jar文件被设置成自动运行。这使得在使用者看来.jar文件的应用是很普通的。他们下载了这个东西,放在他们的桌面上,然后当他们想用的时候点一下就可以了。

这个魔术变起来惊人的容易。每个.jar文件都有一个清单,它们以如下的文件名保存着:

META-INF/MANIFEST.MF

jar命令提供了一个-m选项以指定要用来做清单的文件。以下代码就是这种方法的一个应用。我们来创建一个JarCreator:

jarmfMETA-INF/JarCreator.mf

com.generationjava.tools.JarCreator.class

一个非常基本的清单包含了版本号和制造商,制造商通常也就是JDK的卖主。比如,MacOSX中的清单就是象这个样子:

Manifest-Version:1.0

Created-By:1.3.0(AppleComputer,Inc.)

但是,真正的动作却是开始于额外的第三行:

Manifest-Version:1.0

Main-Class:com.generationjava.util.JarCreator

Created-By:1.3.0(AppleComputer,Inc.)

第三行提供了一个类的名字,静态的主函数就是在这个类中运行的。它等价于在这个类中不给任何参数的运行java命令。

一旦.jar被点击,com.generationjava.util.JarCreator类的主函数将被调用,应用也就可以实现了。

时间: 2024-11-03 17:13:05

Java技巧:在清单里设置主类的相关文章

android-Android怎么在java文件里设置第三方类包的属性值

问题描述 Android怎么在java文件里设置第三方类包的属性值 解决方案 查看这个控件的源码看看是否有相关的设置方法 解决方案二: 这个问题自己也不太了解,但可以推荐几篇有关这个方面的博文.http://blog.csdn.net/bruce_ke/article/details/6911237http://blog.csdn.net/tanqiantot/article/details/8588771 解决方案三: 在需要引用的xml文件中的根布局里面加上xmlns:app = "http

一个JAVA工程中可以有多个主类吗?

问题描述 如题.并请详细解释下.谢谢! 解决方案 解决方案二:不可以.原因是.规定如此.解决方案三:你可以同事写多个主类但是只能允许运行其中的一个主类.解决方案四:逻辑上行不同,程序都需要一个唯一入口,否则系统都不知道你的程序从哪开始.解决方案五:好像不可以吧解决方案六:引用2楼的回复: 你可以同事写多个主类但是只能允许运行其中的一个主类. 就是这样解决方案七:每个class允许存在一个main函数但是实际执行的,只会是其中一个如果是java方式执行,指命令模式java-cp"*.classpa

java vlcj-错误: 找不到或无法加载主类 FilesVideoLANVLC”

问题描述 错误: 找不到或无法加载主类 FilesVideoLANVLC" 错误: 找不到或无法加载主类 FilesVideoLANVLC" 解决方案 你的地址路径,打错了 Java的URI形式的绝对资源路径如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b 它跟Window的地址路径写法上不同

android控件-android中xml设置控件的属性和java文件里设置控件的属性有何不同

问题描述 android中xml设置控件的属性和java文件里设置控件的属性有何不同 android中xml设置控件设置的属性和java文件里设置控件的属性有何不同 是不是java文件里设置可以改变动态的改变控件位置,文字颜色,文字大小 而在xml文件设置之后就无法改变 那具体在java文件设置的属性是如何改变的呢 解决方案 java中可以重新设置去改变xml的设置.但是xml不能去改变java中的设置. 解决方案二: 你可以这样理解,xml设置以后基本不会改变,如果会改变,就要在java里面设

java运行提示:无法加载主类,觉得程序没错,求指导!!!

问题描述 java运行提示:无法加载主类,觉得程序没错,求指导!!! package 基本语句; public interface 接口 { int a=1; int b=2; int c=3; int d=4; int f=5; void print(); void print1();}class jiekou implements 接口{ public void print() { System.out.println(a+b); } public void print1() { Syste

javac-java文件问题]错误:找不到或无法加载主类 Hello.java

问题描述 java文件问题]错误:找不到或无法加载主类 Hello.java 编写简单的Hello.java程序,在cmd命令行下用javac Hello.java命令编译没有问题,可以生成Hello.class文件.但输入java Hello命令后(文件目录和命令目录一致),提示错误:"找不到或无法加载主类 Hello.java".安装配置如下JAVA_HOME D:Javajdk1.8.0_45path .;%JAVA_HOME%bin;classpath .;%JAVA_HOME

请问wpf里,我想设置主窗口透明度与控件透明度不一样,该如何设置?

问题描述 请问wpf里,我想设置主窗口透明度与控件透明度不一样,该如何设置? 如题,比如主窗口的透明度为0.2,我想设置里面grid里嵌套的grid里的一个label或者button的透明度为0.8,该如何设置? <Window x:Class="TopUI.TopCover" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schem

java在linux里设置环境变量后,提示没有那个目录?

问题描述 java在linux里设置环境变量后,提示没有那个目录? 我是放在./opt下的,所属人, 所属组也都设置完了, 请大牛.这是怎么回事,在线等 解决方案 root@ubuntu-2:~# cd /opt/java/jdk1.7 root@ubuntu-2:/opt/java/jdk1.7# cd bin root@ubuntu-2:/opt/java/jdk1.7/bin# ls appletviewer jarsigner javap jdb jps jvisualvm rmic t

helloworld-编写的java程序编译通过但是运行时显示(错误:找不到或无法加载主类 HelloWorld )

问题描述 编写的java程序编译通过但是运行时显示(错误:找不到或无法加载主类 HelloWorld ) 编写的java(HelloWorld )程序编译通过但是运行时显示(错误:找不到或无法加载主类 HelloWorld )4401149_109648.png) 解决方案 你的类名是HelloWorld吗?!不是的话是找不到的哦 解决方案二: 类名是HelloWorld 解决方案三: 应该是 public class HelloWorld{ ... } 解决方案四: 你的命令行输入的是什么?