占位 Java程序部署

程序部署大致分为三类,1.本机-整个程序都在用户计算机上独立运行(单机版程序) 2.远程-整个程序都在服务器端执行,客户端通过非java形式,比如浏览器进行访问

3.介于两者之间-本地运行的客户端,连接到执行应用程序服务的服务端部分。

一.打包

1.cmd命令行方式打包java源代码(.java文件-即src下面的所有包)为jar包---安装好了jdk环境

2.cd到源代码目录下,编译成字节码文件,输出到指定文件夹

javac -d out(输出目录 ) src/com/java/test/*.java src/com/java/user/*.java

3.上面我们得到一个out/字节码.class文件集合,然后要把它们打包为jar包,这里需要生产可执行jar,配置主类信息,告诉哪个类包含主函数

创建一个名为manifest.txt,编辑:

Manifest-Version: 1.0
Class-Path:
Created-By: 1.6.0_06 (Sun Microsystems Inc.)
Main-Class: src/iotest/testmain

------冒号后多个空格,否则可能报错invalid header field

4.执行打包

manifest.txt放在out下

cd到txt目录同级,

运行:jar -cvmf manifest.txt app1.jar iotest

只需要写包名就行,iotest包下是所有项目代码

5.运行jar包

java -jar app1.jar

当然,cmd执行时最好cd到app1.jar所在的目录

报错了,jar没有主清单属性,意思是manifest中生成的MANIFEST.MF中没有写Main-Class信息,去查看了一下真没有,我擦,明明写了,被吃了?

Main-Class:空格 包名.类    手动添加了进去,检查了一下没错啊,肿么回事,还是不行

终于找到原因,Main-Class我写在最后一行,行最后需要回车换行,否则生成不了main-class这行

继续执行又报另一个错,说是无法找到主类,我晕。猜测是因为打包的结构关系与manifest中main-class不一致导致

之前的目录结构:src下有两个文件夹,一个放代码,一个放资源文件。打包时为了将两个部分都包含进jar里,所有多加了一层项目名

即双击打开jar包的结构是,项目名/代码&资源,这样导致找不到主类

我修改了一下目录结构,将src下只放一个目录,加一层变成 src/主目录/代码&资源文件&其它,主目录是.java中包名,例如package main.iotest;的main

所有的其它资源,代码都在main的下级包中,这样打的jar包双击打开第一层就是main,那么main-class: main.xxx.xxx就ok了

6.这样执行java -jar xxx.jar 运行成功。

二,部署

 https://www.ibm.com/developerworks/cn/java/j-webstart/index.html

    

原文地址:https://www.cnblogs.com/hebiao/p/12106178.html