Java项目打包发布
Java获取项目路径的多种方式
Java获取项⽬路径的多种⽅式在正常开发的情况下,我们经常会遇到:需要获取指定⽂件路径,虽然我知道项⽬在本机的路径,⼀旦打包发布了,再根据绝对路径获取指定⽂件,肯定是获取不到的。
这时候就需要⽤java给我们提供的⼀些获取相对路径⽅法了。
@Testpublic void url() throws IOException {// 获取当前项⽬下路径:⽅式⼀File file = new File("");String filePath = file.getCanonicalPath();// 输出:D:\MyCode\log\log4j2-javaSystem.out.println(filePath);// 获取当前项⽬下路径:⽅式⼆// 输出:D:\MyCode\log\log4j2-javaSystem.out.println(System.getProperty("user.dir"));// 获取类加载的根路径String path = this.getClass().getResource("/").getPath().substring(1);// 输出:D:/MyCode/log/log4j2-java/target/classes/System.out.println(path);// 获取当前类的所在⼯程路径String path1 = this.getClass().getResource("").getPath().substring(1);// 输出:D:/MyCode/log/log4j2-java/target/classes/com/gzl/cn/System.out.println(path1);// 获取类加载指定⽂件或者⽂件夹路径String path2 = this.getClass().getResource("/data/DataConvert.dll").getPath().substring(1);System.out.println(path2);//获取所有的类路径包括jar包的路径System.out.println(System.getProperty("java.class.path"));}这个是我的项⽬路径。
ECLIPSE将引用了第三方JAR包的JAVA项目打包成JAR文件的两种方法
ECLIPSE将引用了第三方JAR包的JAVA项目打包成JAR文件的两种方法在Eclipse中,我们可以使用两种方法将引用了第三方JAR包的Java项目打包成JAR文件。
下面将详细介绍这两种方法。
方法一:使用Eclipse自带的导出功能1. 在Eclipse中,右键单击项目,选择"Export"。
2. 在弹出的对话框中,选择"Java"下的"JAR file",然后点击"Next"。
3. 在"JAR File Specification"页面上,选择要导出的项目以及要导出的资源;在"Export destination"中,指定导出的JAR文件的保存路径和文件名。
4. 在"JAR Packaging Options"页面上,选择"Export generated class files and resources",确保要导出的类文件和资源都被包含在JAR文件中。
5. 在"Select the export destination"页面上,选择"Package required libraries into generated JAR",这将会将所需的第三方JAR包也包含在生成的JAR文件中。
6. 点击"Finish"完成导出。
这种方法的优点是简单快捷,只需要几个简单的步骤就可以完成打包。
但是缺点是生成的JAR文件会将第三方JAR包也放在同一个目录下,可能导致文件夹混乱。
方法二:使用Apache Maven插件打包1. 首先,确保你的项目中存在pom.xml文件,它描述了项目的依赖关系和构建配置。
2. 打开Eclipse的"Terminal"窗口,或者使用其他的命令行工具。
java一键部署jar包和war包
java⼀键部署jar包和war包⽬录java ⼀键部署 jar 包和 war 包⼀、创建打包命令 gateway-package.bat⼆、创建启动⽂件 gateway.xml三、⼀键打包并部署脚本 gateway-deploy.bat ⽂件内容四、双击打包部署 bat ⽂件 gateway-deploy.bat五、执⾏ vue 打包并且上传部署六、安装 7z 压缩⼯具并配置系统环境变量七、创建上传部署⽂件 webConfig.xml九、双击执⾏部署 vue-deploy.batjava ⼀键部署 jar 包和 war 包⼀、创建打包命令 gateway-package.bat@echo offcd /d "F:\uincall-cloud-service\uin-api-alibaba\gateway\"gradle build bootJar@echo off 关闭命令回显,当不需要 dos 命令⼀⾏⼀⾏在命令窗⼝中显⽰的时候使⽤,@echo on 显⽰命令回显例如:当为 @echo on 会显⽰执⾏的命令@echo ontitle Acolor 01echo %date%pause当为 @echo off 并不会执⾏ title A 和 color 01 命令echo 是输⼊提⽰信息pause 是暂停执⾏执⾏命令,按下任意键后会继续执⾏,pause 会提⽰“请按任意键继续...”当执⾏的 bat 不在项⽬⽬录时,需要进⼊到项⽬⽬录执⾏打包命令,需要使⽤ /d 命令,后⾯是进⼊的⽬录gradle build bootJar 是执⾏ gradle 打包命令,如果是 maven ⼯程则使⽤ maven 打包命令,例如:mvn clean package -Dmaven.test.skip=true创建项⽬打包并执⾏到上传到服务器,并且结束之前项⽬部署的进程,并启动新的部署命令⼆、创建启动⽂件 gateway.xml<?xml version="1.0" encoding="utf-8" ?><config><threadPoolSize default="5">3</threadPoolSize><!--线程池⼤⼩,如果上传服务器多的话可以调⼤,默认5个线程--><servers><server><!-- 服务器 ip --><host>1.0.0.0</host><!-- 服务器⽤户名 --><userName>root</userName><!-- 服务器密码 --><password>password</password><!-- 上传的⽂件,可以有多个 --><uploads><upload><!-- 上传的包路径 --><local>F:\uincall-cloud-service\uin-api-alibaba\gateway\build\libs\gateway-1.0.0.jar</local><!-- 上传到服务器的路径 --><remote>/root/data/callcenter</remote></upload></uploads><!-- 需要执⾏的命令,可以有多个 --><commands><!-- 结束之前部署的进程 --><command><![CDATA[source /etc/profile; ps -ef | grep gateway-1.0.0.jar | grep -v grep | awk '{print $2}' | xargs kill -9]]></command><!-- 重新部署新上传的包 --><command><![CDATA[source /etc/profile; nohup java -jar /root/data/callcenter/gateway-1.0.0.jar >> /root/data/callcenter/gateway.log 2>&1 &]]></command> </commands></server></servers></config>ps -ef | grep gateway-1.0.0.jar | grep -v grep | awk '{print $2}' | xargs kill -9 查询正在部署的项⽬进⾏并且杀死ps -ef | grep gateway-1.0.0.jar 是查询进程grep -v grep 过滤包含 grep 的进程⾏,然后再杀掉剩下的进程awk '{print $2}' 提取找到的进程⾏记录中第⼆列的参数,也就是正在执⾏项⽬的进程号xargs kill -9 把前⾯的参数都传递给后⾯的命令 kill -9三、⼀键打包并部署脚本 gateway-deploy.bat ⽂件内容call gateway-package.batjava -jar F:\uincall-cloud-service\test-deploy\javaauto.jar F:\uincall-cloud-service\test-deploy\gateway.xmlpausecall gateway-package.bat 是执⾏上⾯的项⽬打包的 gateway-package.bat ⽂件,call 作⽤是可以在当前批处理执⾏前调⽤另⼀个批处理⽂件,这⾥的意思就是先打包在上传⾄服务器并且部署java -jar F:\uincall-cloud-service\test-deploy\javaauto.jar 可执⾏⽂件 jar 包,负责执⾏上传部署指令F:\uincall-cloud-service\test-deploy\gateway.xml ,上传部署的命令都写在 gateway.xml 中注意:这⾥要执⾏的⽂件都需使⽤绝对路径,哪怕在⼀个⽂件加⾥四、双击打包部署 bat ⽂件 gateway-deploy.bat成功上传并且部署成功!!五、执⾏ vue 打包并且上传部署创建 vue 打包 bat ⽂件 vue-package.bat@echo offecho 开始打包......cd /d "F:\uincall-cloud-service\\"npm run buildecho 打包完毕 successF:\uincall-cloud-service\" 是⼯程根⽬录六、安装 7z 压缩⼯具并配置系统环境变量创建 7z 压缩 vue 打包后的 bat ⽂件 zip.bat@echo offset CALLCENTER_PATH=F:\uincall-cloud-service\\dist\*set ZIP_PATH=F:\uincall-cloud-service\deploy\callcenter.tarecho 开始压缩 callcenter vue7z a -r %ZIP_PATH% %CALLCENTER_PATH%set CALLCENTER_PATH=F:\uincall-cloud-service\\dist* vue 打包后的⽂件夹⽬录,打包后的⽂件都在此⽬录下set ZIP_PATH=F:\uincall-cloud-service\deploy\callcenter.tar 设置打包后的⽂件名和格式7z a -r %ZIP_PATH% %CALLCENTER_PATH%,7z:使⽤ 7z 压缩,a:是添加⽂件到压缩⽂件中,-r:包括⼦⽬录,其他是引⽤上⾯定义的变量,也就是打包后的格式和需要打包的⽂件所在⽬录七、创建上传部署⽂件 webConfig.xml<config><threadPoolSize default="5">3</threadPoolSize><!--线程池⼤⼩,如果上传服务器多的话可以调⼤,默认5个线程--><servers><server><!-- 服务器 ip --><host>1.0.0.0</host><!-- 服务器⽤户名 --><userName>root</userName><!-- 服务器密码 --><password>password</password><!-- 上传的⽂件,可以有多个 --><uploads><upload><!-- 上传的⽂件 --><local>F:\uincall-cloud-service\deploy\callcenter.tar</local><!-- 上传到服务器的⽬录 --><remote>/root/data/callcenter/web</remote></upload></uploads><!-- 上传成功后执⾏的命令 --><commands><!-- 添加 777 权限 --><command><![CDATA[source /etc/profile; chmod 777 /root/data/callcenter/web/callcenter.tar]]></command><!-- 解压 -C 表⽰创建新的档案⽂件,会解压到新的⽬录,默认解压到根⽬录 / --><command><![CDATA[source /etc/profile; tar -xvf /root/data/callcenter/web/callcenter.tar -C /root/data/callcenter/web]]></command><!-- 解压完删除压缩⽂件 --><command><![CDATA[source /etc/profile; rm -rf /root/data/callcenter/web/callcenter.tar]]></command><!-- 刷新 nginx --><command><![CDATA[source /etc/profile; nginx -s reload]]></command></commands></server></servers></config>创建 vue 打包部署 bat ⽂件 vue-deploy.bat,分别执⾏上⾯创建打包 vue-package.bat 压缩 zip.bat 上传部署命令webConfig.cmlcall F:\uincall-cloud-service\test-deploy\vue-package.batcall F:\uincall-cloud-service\test-deploy\zip.batjava -jar F:\uincall-cloud-service\test-deploy\javaauto.jar F:\uincall-cloud-service\test-deploy\webConfig.xmlecho 上传并解压完毕pause九、双击执⾏部署 vue-deploy.bat成功上传并解压以上就是java ⼀键部署 jar 包和 war 包的详细内容,更多关于java 部署 jar 包 war 包的资料请关注其它相关⽂章!,希望⼤家以后多多⽀持!。
详解JavaProject项目打包成jar,并生成exe文件
详解JavaProject项⽬打包成jar,并⽣成exe⽂件初衷:⼯作中写⼀些辅助⼯作的⼩⼯具时,将其打成exe,⽅便使⽤准备⼯作:Eclipse,jdk,net.sf.fjep.fatjar_0.0.32.jar,exe4j.exe1 将项⽬打包成jar⽂件:1.1 ⽤Eclpise的Export功能⽣成jar(单纯⽣成jar包时推荐)⽬录结构右击项⽬,选择Export只留java⽂件默认next到finish,有两种处理⽅式⽅式⼀:⾃动⽣成MANIFEST.MF(默认的) ⽅式⼆:⾃⼰写MANIFEST.MF(可以写⼀些⾃⼰想要的内容)说明: 1) 通过指定“Main-Class”来达到可执⾏jar⽂件的⽬的 2) 其实我们最终是将项⽬打包成exe,Class-Path可以不指定,在打包exe的时候还要指定classpath的 3) 因为有依赖包和资源⽂件,执⾏⽣成的jar⽂件,会报异常 1.2 ⽤eclipse三⽅插件fatjar⽣成jar(⽣成exe⽂件时推荐)下载net.sf.fjep.fatjar_0.0.31.jar,将去放在Eclipse的plugins⽬录下右击项⽬,选择Build Fat Jar 选择项⽬⽤到的外部依赖jar 说明:此jar是可执⾏的2 将项⽬⽣成exe⽂件:(使⽤软件是exe4j)在任意⽬录创建⼀个⽂件夹,命名最好和项⽬名相同,将⼀下⽂件放⼊其中打开exe4j,按步骤操作:1.welcome 跳过2.Project type 3.Application info 4.Executable info5.Java invocation6.JRE Search sequence Preferred VM 7.Splash screen,8.Messages,pile executable,10.Finishednext --> finish注:⽤到的软件是exe4j,注意要注册激活(⽹上随便找个注册码就好),不然运⾏⽣成的exe⽂件时会有弹出框以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
Mars-Java3.0使用教程
properties.put("url","jdbc:mysql://10.211.55.15:3306/mars?
11. useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8");
12.
properties.put("username","root");
13.
properties.put("password","Root123456!");
14.
properties.put("driverClassName","com.mysql.jdbc.Driver");
15.
16.
list.add(properties);
17.
18.
// 如果要多个数据源,add多个到list即可
括号里的pom,jar等标记是指maven里的配置项,不包含在名称中
其他规范
暂时就对模块划分有规范,没有其他规范,其他的请遵循jvm规范和你们公司的规范
本文档使用 书栈网 · 构建
-6-
快速入门
快速搭建 配置文件详解 项目启动详解 打包发布
本文档使用 书栈网 · 构建
16.
17.
// 如果要多个数据源,add多个到list即可
18.
return list;
19.
}
20.
21. /* *** 以下内容,如果不需要或者用默认值,则可以不重写 *** */
22.
23.
// 端口号,默认8080
JAR包介绍大全用途作用详解JAVA
JAR包介绍大全用途作用详解JAVAJAR(Java Archive)是Java的一种标准压缩文件格式,它是一种将多个Java类文件、资源文件、配置文件和元数据文件打包成一个文件的方式。
JAR包的使用具有很多作用和用途,下面将详细介绍。
1. 代码打包和发布:通过将Java类文件打包成JAR包,可以方便地将整个项目的代码进行打包和发布。
这样可以简化代码的传输、分发和部署。
2. 代码模块化:JAR包可以将一组相关的Java类打包成一个模块,便于代码的管理和维护。
不同的模块可以根据需要进行组合,提高代码的可复用性和可扩展性。
3.应用程序部署:将应用程序的所有依赖的类和资源文件统一打包到一个JAR包中,方便进行部署和发布。
可以减少部署过程中的错误和问题。
4. 库文件管理:JAR包可以用来管理和分发Java库文件。
开发者可以将常用的库文件打包成JAR包,并在其他项目中使用。
5. 类库扩展:在Java中,可以通过类路径(CLASSPATH)来指定需要加载的类库。
而JAR包可以通过设置类路径来扩展Java的类库。
只需将JAR包加入到类路径中,就可以在代码中使用其中的类和方法。
6.版本管理:JAR包可以用来管理和分发不同版本的软件。
通过使用不同的JAR包命名规则或目录结构,可以区分不同版本的软件,方便用户选择特定版本的功能和功能。
7.防止类文件冲突:当使用多个第三方类库时,可能会发生类文件冲突的情况。
通过将每个类库打包成一个JAR包,并且每个类库中的类在包的结构中唯一,可以避免类文件冲突的问题,保证程序的正确运行。
8. 加载器和类加载:在Java中,类加载器负责将类文件加载到Java虚拟机中。
而JAR包是可以被类加载器加载的,可以通过类加载器的机制来加载JAR包中的类。
9. Java application扩展:JAR包可以作为Java应用程序的扩展,可以在运行时动态地加载和使用JAR包中的类和方法。
这种机制可以实现插件式的应用程序设计。
在Eclipse中Java项目的打包
( 1 )在 E c l i p s e 3 . 5集 成 开 发 环 境 下 ,在 自 己 创 建 的 J a v a P r o j e c t( 例 如 :c h )的包 p a c k a g e( 例 如 :e x ) 中 ,建 立 一 个 文件 R e c t . j a v a 。
pa c k ag e e x;
一
注 意 :不是 在 包 ( 例 如 :e x )上 单 击 右 键 。 ( 2 )在 M a n i f e s t . m f 文 件 中输 入 以下 内 容 :
Ma n i f e s t - Ve r s i o n :1 . 0 Ma i n - Cl a s s :e x . Us e Re c t
Ma ni f e s t . mf 。
的 一 个 或 多个 程 序 打 包 成 j a r 文件 包 ,操 作 更 简 单 、 易学 。
2 将一个 或 多个 程序 打 包成 j a r 文件 包
2 . 1 要 确 保 自 己写 的 程 序 可 以成 功 运 行
【 例 1 】编写一个 R e c t( 矩形 )类 ,并测试 。共有两个 程
p u b l i c s t a i t c v o i d ma i n( S t r i n g口 a r g s ) {
R e c t r = n e w Re c t( 9 , 5 );
r . d i s p l a y( );
J
( 3 )保 存 程 序 ,编 译 、运 行 程 序 ,输 出 结 果 如 下 :
共 3行 ( 注 意 :第 一 行 、 第 二 行 的 冒 号 “ : ”后 面 至 少 有 个 空 格 ,第 三行 为 空 ) 。 然 后 ,保 存 文 件 。
java项目打包成jar包和war包有什么区别
java项目打包成jar包和war包有什么区别在Java中,将项目打包成JAR(Java Archive)包和WAR(Web Archive)包是常见的部署方式。
这两种包的主要区别在于它们的用途和部署环境。
1. JAR包(Java Archive):JAR包是一种用于打包Java类、资源文件和库文件的归档文件格式。
JAR包主要用于打包和分发独立的Java应用程序、Java库和组件。
JAR包可以包含Java代码、字节码、配置文件、资源文件和其他依赖的类库文件。
JAR包可以通过Java虚拟机(JVM)直接执行,因此适用于命令行工具、桌面应用程序和独立的Java应用。
2. WAR包(Web Archive):WAR包是一种用于打包和分发Web应用程序的归档文件格式。
WAR包主要用于部署Java Web应用程序,例如基于Java的Web应用框架(如Java Servlet、JavaServer Pages(JSP)和JavaServer Faces (JSF))。
WAR包可以包含Web应用程序的所有内容,包括Java类、JSP页面、HTML、CSS、JavaScript、配置文件、静态资源(图像、样式表等)以及依赖的类库文件。
WAR包可以部署到Java Web服务器(如Apache Tomcat、Jetty、WebLogic和WebSphere)中,以提供Web应用程序的服务。
总结:JAR包主要用于独立的Java应用程序和库的分发,而WAR包主要用于Java Web应用程序的部署。
选择JAR包还是WAR包取决于你的项目类型和部署需求。
如果你开发的是一个独立的Java应用程序,你可以将其打包为JAR包。
如果你开发的是一个Java Web应用程序,你应该将其打包为WAR包,并将其部署到Java Web服务器中。
JavaSpringBoot打包部署方案
JavaSpringBoot打包部署⽅案Java Spring Boot 打包部署⽅案背景最近在做⼀个内⽹的项⽬,项⽬前后端分离,后端⽤Spring Boot,前端⽤Ant Design React。
部署的环境是学校内⽹,部署是通过4G⽹卡+VPN连接到内⽹的机器部署的,考虑到Docker需要连接⽹络且镜像很⼤,我们采⽤最原始的部署⽅式:后端打成jar包传到服务器上,然后java -jar xxx.jar运⾏。
这其中就遇到了⼀些问题:⽹络慢,打出来的jar包60M左右,要传10分钟。
⽽⼤部分时候jar包中以来的其他库都是相同的,所以想把依赖的java包分离出来。
在机器上部署⼯序繁杂,⼤部分都是备份、复制、重启等操作。
所以想写个shell脚本减少部署的⼯作量。
配置⽂件也要从 Spring Boot 的 jar 包中分离出来,⽅便在服务器上配置打包配置项⽬采⽤Gradle做依赖管理,我在build.gradle中写了⾃定义的任务packTar和packTarWithoutLibs,分别可以打出含有依赖库和不含依赖库的tar.gz包,⽽这个包解压后的结构是这样的:app-server-1.0.0|-bin/| |-app.sh # 应⽤脚本,能⽤于启动、停⽌、查看状态、查看⽇志、安装、升级|-config/| |-application.yml #配置⽂件|-lib/| |-a.jar # 依赖的jar| |-b.jar| |-c.jar|-app.jar # 应⽤的jar以下就是我的Gradle打包配置:build.gralde:buildscript {repositories {maven {url 'https:///nexus/content/groups/public'}}// 引⼊ spring boot 插件dependencies {classpath "org.springframework.boot:spring-boot-gradle-plugin:2.3.3.RELEASE"}}group = 'com.xxx'version = '1.0.12'// 插件apply plugin: 'java'apply plugin: 'org.springframework.boot'apply plugin: 'io.spring.dependency-management'sourceCompatibility = 1.8configurations {compileClasspath {extendsFrom annotationProcessor}}repositories {maven { url 'https:///nexus/content/groups/public' }}// 依赖dependencies {// ......implementation 'org.springframework.boot:spring-boot-starter-web'// ......}// =========================== 打包 ===========================// 复制依赖的jartask copyJar(type: Copy) {fileMode 0755delete "$buildDir/libs/lib"from configurations.defaultinto "$buildDir/libs/lib"}// 删除依赖的jartask removeLibs(type: Delete) {delete "$buildDir/libs/lib"}task copyConfig(type: Copy) {fileMode 0755delete "$buildDir/libs/config"from('src/main/resources') {include 'application-prod.yml'}rename 'application-prod.yml', 'application.yml'into "$buildDir/libs/config"}// 复制脚本task copyScript(type: Copy) {fileMode 0755delete "$buildDir/libs/bin/app.sh"from('src/main/resources') {include 'app.sh'}into "$buildDir/libs/bin"}bootJar {fileMode 0755archiveFileName = 'app-server.jar'// 例外所有的jarexcludes = ["*.jar",'application.yml','application-prod.yml','app.sh']// lib⽬录的清除和复制任务dependsOn copyJardependsOn copyConfigdependsOn copyScript// 指定classpathmanifest {attributes "Manifest-Version": 1.0,"Class-Path": configurations.default.files.collect {"lib/$"}.join(' ')}}// 打Tar包task packTar(type: Tar) {dependsOn bootJararchiveFileName = "app-server-${archiveVersion.get()}.tar.gz"destinationDirectory = file("$buildDir/dist")from "$buildDir/libs"fileMode 0755}// 打Tar包task packTarWithoutLibs(type: Tar) {dependsOn bootJardependsOn removeLibsarchiveFileName = "app-server-nolib-${archiveVersion.get()}.tar.gz"destinationDirectory = file("$buildDir/dist")from "$buildDir/libs"fileMode 0755}应⽤部署脚本包含有前后端部署安装的逻辑,假设应⽤名称是app,app应⽤有两个模块server和browser,shell脚本如下:app.sh:#!/bin/bash# 程序名APP=app# 程序⽬录APP_PATH="/usr/local/iot/$APP"SERVER_NAME="$APP-server"SERVER_JAR="$APP-server.jar"TODAY="`date +%Y%m%d`"# 启动前需要设置的环境变量setEnvVars(){# 如果使⽤默认的glibc的ptmalloc2内存分配器,为避免64M arena问题,应加上这个参数# export MALLOC_ARENA_MAX=4# 使⽤jemalloc内存分配器export LD_PRELOAD=/usr/local/lib/libjemalloc.so# jvm崩溃是导出core⽂件ulimit -c unlimited}# JVM启动参数'-Xmx1500M''-XX:NativeMemoryTracking=detail')#使⽤说明,⽤来提⽰输⼊参数usage() {echo -e "Usage: ./app.sh <command>"echo -e "commands:"echo -e "\t status"echo -e "\t start"echo -e "\t stop"echo -e "\t restart"echo -e "\t log"echo -e "\t install <module> <version>"echo -e "\t update <server-part> <version>"echo -e "<module>:"echo -e "\t server"echo -e "\t browser"echo -e "<server-part>:"echo -e "\t jar"echo -e "\t config"echo -e "<version>:"echo -e "\t when install, it can install sever or browser module tar.gz file like:"echo -e "\t - $APP-server-1.0.11.tar.gz"echo -e "\t - $APP-browser-1.0.11.tar.gz\n"echo -e "\t when update, it can only update server module from tar.gz file like:"echo -e "\t - $APP-server-nolib-1.0.11.tar.gz"exit 1}############################### 检查状态 ############################### is_exist(){pid=`ps -ef|grep $SERVER_JAR|grep -v grep|awk '{print $2}' `#如果不存在返回1,存在返回0if [ -z "${pid}" ]; thenreturn 1elsereturn 0fi}############################### 重启 ############################### restart(){stopstart}############################### 启动 ############################### start(){is_existif [ $? -eq "0" ]; thenecho "${SERVER_JAR} is already running. pid=${pid} ."elsecd "$APP_PATH/server"setEnvVarsnohup java ${JVM_FLAGS[*]} -jar $SERVER_JAR >/dev/null 2>&1 &statusfi}############################### 停⽌ ############################### stop(){is_existif [ $? -eq "0" ]; thenecho "kill Java process: $pid"kill -9 $pidelseecho "${SERVER_JAR} is not running"fi}############################### 查看状态 ############################### status(){is_existif [ $? -eq "0" ]; thenecho "${SERVER_JAR} is running. Pid is ${pid}"elsefi}############################### 查看⽇志 ###############################log(){tail -fn 1000 "$APP_PATH/log/$APP.log"}############################### 更新server模块的jar或config ###############################update(){serverPart=$1version=$2if [ -z "$serverPart" ] ;thenecho "invalid <server-part>, it can't be empty. example: $APP update jar 1.0.11, 'jar' is the <server-part>"exit 1fiif [ "$serverPart" != "jar" ] && [ "$serverPart" != "config" ] ;thenecho "invalid <server-part>, it must be 'config' or 'jar', like: $APP update jar 1.0.11"exit 1fiif [ -z "$version" ] ;thenecho "invalid <version>, it can't be empty. example: $APP update jar 1.0.11, '1.0.11' is the <version>"exit 1fiversionFile="$APP_PATH/version/$APP-server-nolib-$version.tar.gz"if [ ! -f "$versionFile" ]; thenecho "invalid <version>, corresponding tar.gz file not exist: $versionFile"exit 1fiif [ "$serverPart" == "jar" ]; thenupdateJar "$version"fiif [ "$serverPart" == "config" ]; thenupdateConfig "$version"fi}######################### 将version⽬录下指版本的tar.gz⽂件copy到temp⽬录下解压出来 ######################### extractVersionTagFile(){version=$1tarFile="$APP_PATH/version/$SERVER_NAME-nolib-$version.tar.gz"tempDir="$APP_PATH/temp/$version"echo -e "copy to tempdir: $tarFile --> $tempDir"rm -rf "$tempDir"mkdir -p "$tempDir"cp "$tarFile" "$tempDir"echo -e "extract file:\t $tempDir/$SERVER_NAME-nolib-$version.tar.gz"cd "$tempDir"tar -xf "$SERVER_NAME-nolib-$version.tar.gz"rm "$SERVER_NAME-nolib-$version.tar.gz"}######################################### 更新jar⽂件 #########################################updateJar(){# print versionversion=$1echo "update jar of version: $version"if [ -z "$version" ] ;thenecho "version is empty"exit 0fi# backup old jaroldJar="$APP_PATH/server/$SERVER_JAR"if [ -f $oldJar ]; thenecho -e "backup file:\t $oldJar --> $oldJar.bak"mv -f "$oldJar" "$oldJar.bak"fi# copy tar.gz file in version/ to temp/ and extract itextractVersionTagFile $version# copy new jar to server/echo -e "replace jar:\t $tempDir/$SERVER_JAR --> $APP_PATH/server/$SERVER_JAR"cp "$tempDir/$SERVER_JAR" "$APP_PATH/server/$SERVER_JAR"}######################################### 更新application.yml配置⽂件 ######################################### updateConfig(){# print versionecho -e "update config of version: $version"if [ -z "$version" ] ;thenecho "version is empty"exit 0fi# backup old config fileoldConfig="$APP_PATH/server/config/application.yml"if [ -f $oldConfig ]; thenecho -e "backup file:\t $oldConfig --> $oldConfig.$TODAY.bak"mv -f "$oldConfig" "$oldConfig.$TODAY.bak"fi# copy tar.gz file in version/ to temp/ and extract itextractVersionTagFile $version# copy new jar to server/config/echo -e "replace config:\t $tempDir/config/application.yml --> $APP_PATH/server/config/application.yml"cp "$tempDir/config/application.yml" "$APP_PATH/server/config/application.yml"}######################################### 安装 ######################################### # 语法:# app install <module> <version># 例如:# app install server 1.0.11# app install browser 1.0.8install(){module=$1version=$2versionFile="$APP_PATH/version/$APP-$module-$version.tar.gz"if [ ! -f "$versionFile" ]; thenecho "file not exist: $versionFile"exit 1fi# 备份oldModuleDir="$APP_PATH/$module"if [ -d $oldModuleDir ]; thenecho -e "backup module dir:\t $oldModuleDir --> $oldModuleDir-bak"rm -r "$oldModuleDir-bak"mv -f "$oldModuleDir" "$oldModuleDir-bak"fiinstallDir="$APP_PATH/$module" # example: /usr/local/iot/app/servermkdir -p "$installDir"echo -e "copy tar.gz:\t $versionFile --> $installDir"cp "$versionFile" "$installDir"# extactcd "$installDir"echo "extract tar.gz: $APP-$module-$version.tar.gz"tar -xf "$APP-$module-$version.tar.gz"rm "$APP-$module-$version.tar.gz"# install server moduleif [ "$module" == "server" ]; thenecho "install server completed."echo "!!!! remember to restart server module: app restart !!!! "fi# or install browser moduleif [ "$module" == "browser" ]; thenecho "install browser completed. change dir permission 755..."# change the browser module dir permissionchmod 755 -R "$installDir"echo "!!!! remember to reload nginx: sudo nginx -s reload !!!! "fi}#根据输⼊参数,选择执⾏对应⽅法,不输⼊则执⾏使⽤说明case "$1" in"start")start;;"stop")stop;;"status")status;;"log")log;;restart;;"update")update $2 $3;;"install")echo "install 2: $2, 3: $3" install $2 $3;;*)usage;;esac。
在Eclipse中进行Java项目的构建和发布
在Eclipse中进行Java项目的构建和发布第一章:项目创建与配置在Eclipse中构建和发布Java项目,首先需要创建一个Java项目。
打开Eclipse,点击左上角的"File",选择"New",然后点击"Java Project"。
在弹出的对话框中,输入项目名称,并选择合适的JRE版本。
点击"Finish"按钮,即可创建一个Java项目。
第二章:项目结构与文件管理创建Java项目后,在Eclipse的"Package Explorer"窗口中可以看到项目的结构。
可以通过右键点击项目名称来创建新的包、类或其他资源文件。
Eclipse提供了便捷的菜单选项,可以进行项目文件的创建、编辑和删除。
第三章:依赖管理在Java项目中,会用到各种各样的依赖库和框架。
Eclipse提供了Maven和Gradle插件,方便管理项目中的依赖。
可以通过项目的属性对话框来添加、删除、更新依赖库。
选择项目右键菜单中的"Properties",然后在对话框中找到"Java Build Path",点击"Libraries"标签,可以看到当前项目使用的所有库文件。
第四章:编译与调试在Eclipse中进行Java项目的构建,首先需要将源代码编译成可执行的字节码文件。
Eclipse提供了自动编译的功能,只需保存修改后的代码,Eclipse就会自动编译并生成对应的字节码文件。
同时,Eclipse还提供了强大的调试功能,可以方便地进行断点调试、变量查看等操作。
第五章:打包与部署在完成项目的开发和调试后,需要将项目打包成可执行的文件,并部署到服务器上。
Eclipse提供了"Export"功能,可以将项目打包成JAR文件、WAR文件或可运行的可执行文件。
Java项目常见打包方式
Java项⽬常见打包⽅式
第⼀种:打WAR包
1.可以⽤Eclipse和MyEclipse⼯具⾃动打包,右键项⽬,然后导出war包就可以了;
2.可以运⽤DOS命令来⼿⼯打war包
①⾸先,打开DOS命令⾏,敲⼊“jar”或者“jar help”,我们发现它提⽰不是内部或外部的命令这样的错误,这时可能是你的JAVA环境没有配置好,可以⽤JAVA_HOME⽅式或者直接在Path路径⾥配置,等配置好(注意你的JDK版本,⾥⾯有jar.exe和javac.exe的版本适合)我们再敲⼊"jar",如果出现关于jar的⽤法信息,说明配置成功。
②然后,⽤DOS命令进⼊到你的项⽬中,例如我们要打包的⽂件在D:\workitem中,那就:
运⾏ cmd;
进⼊要打包⽂件⽬录,cd D:\workitem
然后输⼊打包命令:jar -cvf workitem.war *
回车,⽂件配就被打包成了workitem.war *,位于D:\workitem中。
第⼀种:打EAR包
1.同样可以使⽤Eclipse和MyEclipse⼯具⾃动打包,就不概述了;
2.使⽤上述同样的⽅法先看看JAVA环境有没有配置好,在确定配置好的前提下:
①假设我们需要打包的⽂件夹的路径是D:\workitem,假设使⽤的操作系统是windows7;
②进⼊CMD命令提⽰符窗⼝,输⼊命令进⼊相应⽂件夹:cd D:\workitem;
③然后输⼊打包命令:jar -cvf workitem.ear *,同样在同名⽬录下就能看到我们打包好的EAR⽂件了,可以使⽤命令:dir 来进⾏查看。
代码发布与部署的流程与方法
代码发布与部署的流程与方法代码发布与部署是软件开发流程中的重要环节,它涉及将开发完成的代码部署到生产环境中以保证软件的顺利运行。
本文将介绍代码发布与部署的流程与方法,详细阐述其步骤与注意事项。
1.概述代码发布与部署的目标是将开发完成的代码从开发环境迁移到生产环境,确保软件能够在实际环境中正常运行。
发布是指将代码打包并准备好部署环境,部署则是将打包好的代码部署到目标服务器。
2.流程2.1.环境划分在进行代码发布与部署之前,需要划分不同的环境。
常见的环境包括开发环境、测试环境和生产环境。
开发环境是开发人员进行编码和调试的地方,测试环境是验证功能和性能的地方,生产环境是对外提供服务的地方。
2.2.版本控制代码发布与部署的第一步是进行版本控制。
使用版本控制系统(如Git)管理代码的版本,可以方便地追踪、回滚和协同开发。
在发布前,需要确保代码已经提交到版本控制系统,并进行了相应的标签或分支管理。
2.3.构建与打包构建与打包是将源代码编译成可执行文件、静态文件等,并生成相应的部署包。
构建的过程中需要进行一些必要的配置,如指定打包目录、依赖管理等。
打包后的文件保证了代码的可移植性,可以在不同的环境中使用。
2.4.部署准备在进行部署之前,需要对目标服务器进行准备工作。
首先,要确保服务器中已经安装了所需的运行环境和依赖项。
其次,要进行服务器配置,如网络、防火墙、负载均衡等。
还可以进行一些性能调优和安全策略的设置。
2.5.部署部署是将打包好的代码部署到目标服务器中。
在部署过程中,可以选择手动部署或自动部署。
手动部署通常适用于小型项目或简单的应用,但对于大型项目或复杂的应用,建议使用自动化部署工具(如Jenkins)来进行部署。
自动化部署可以提高效率,减少人工错误。
2.6.部署验证在进行部署之后,需要对部署结果进行验证,确保部署成功。
验证可以通过访问应用、运行自动化测试、检查日志等方式进行。
如果验证失败,需要迅速定位问题并进行修复。
centos7使用tomcat部署javaweb项目
centos7使⽤tomcat部署javaweb项⽬1.下载⼆进制安装包2.下载jdk和配置环境变量这⾥就不再多描述不清楚,可以3.在centos7下安装 tomcat#切换到/usr/local ⽬录下解压安装[root@localhost local]# cd /usr/local/[root@localhost local]# tar xf apache-tomcat-8.0.50.tar.gz#启动tomcat 脚本为startup.sh[root@localhost local]# cd apache-tomcat-8.0.50/[root@localhost apache-tomcat-8.0.50]# ./bin/startup.shUsing CATALINA_BASE: /usr/local/apache-tomcat-8.0.50Using CATALINA_HOME: /usr/local/apache-tomcat-8.0.50Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.0.50/tempUsing JRE_HOME: /usr/lib/jvm/javaUsing CLASSPATH: /usr/local/apache-tomcat-8.0.50/bin/bootstrap.jar:/usr/local/apache-tomcat-8.0.50/bin/tomcat-juli.jar Tomcat started.#登陆⽹页验证如果不能显⽰,估计是防⽕墙,要么关闭防⽕墙或者防⽕墙设置开放8080端⼝的规则。
#关闭tomcat脚本为shutdown.sh[root@localhost apache-tomcat-8.0.50]# ./bin/shutdown.shUsing CATALINA_BASE: /usr/local/apache-tomcat-8.0.50Using CATALINA_HOME: /usr/local/apache-tomcat-8.0.50Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.0.50/tempUsing JRE_HOME: /usr/lib/jvm/javaUsing CLASSPATH: /usr/local/apache-tomcat-8.0.50/bin/bootstrap.jar:/usr/local/apache-tomcat-8.0.50/bin/tomcat-juli.jar 4.编写⼀个tomcat的启动脚本并加⼊service系统服务[root@localhost apache-tomcat-8.0.50]# cat /etc/rc.d/init.d/tomcat#!/bin/bash#chkconfig: 23451090#description: Starts and Stops the Tomcat daemon.#by benjamin###############################################Startup script for Tomcat on Linux#filename tomcat.sh#Make sure the Java and the tomcat installation path has been added to the PATHJAVA_HOME=/usr/lib/jvm/java #JDK安装⽬录CATALINA_HOME=/usr/local/apache-tomcat-8.0.50 #tomcat安装⽬录export JAVA_HOMEexport CATALINA_HOME###############################################start_tomcat=$CATALINA_HOME/bin/startup.sh #tomcat启动⽂件stop_tomcat=$CATALINA_HOME/bin/shutdown.sh #tomcat关闭⽂件start() {echo -n "Starting tomcat: "${start_tomcat}echo"tomcat start ok."}stop() {echo -n "Shutting down tomcat: "${stop_tomcat}echo"tomcat stop ok."}# See how we were calledcase"$1"instart)start;;stop)stop;;restart)stopsleep10start;;*)echo"Usage: $0 {start|stop|restart}"esacexit 0#给启动脚本授权chmod 755 /etc/rc.d/init.d/tomcat#将tomcat加⼊到系统服务中chkconfig --add /etc/rc.d/init.d/tomcat# 在tomcat中的catalina.sh⽂件中添加如下变量vim /usr/local/apache-tomcat-8.0.50/bin/catalina.sh#在配置⽂件中加⼊如下变量export JAVA_HOME=/usr/lib/jvm/java #javajdk的安装路径,使⽤echo $JAVA_HOME命令可以读取export CATALINA_HOME=/usr/local/apache-tomcat-8.0.50export CATALINA_BASE=/usr/local/apache-tomcat-8.0.50export CATALINA_TMPDIR=/usr/local/kencery/apache-tomcat-8.0.50/temp# 验证是否已加⼊service[root@localhost apache-tomcat-8.0.50]# service tomcat startStarting tomcat: Using CATALINA_BASE: /usr/local/apache-tomcat-8.0.50Using CATALINA_HOME: /usr/local/apache-tomcat-8.0.50Using CATALINA_TMPDIR: /usr/local/kencery/apache-tomcat-8.0.50/tempUsing JRE_HOME: /usr/lib/jvm/javaUsing CLASSPATH: /usr/local/apache-tomcat-8.0.50/bin/bootstrap.jar:/usr/local/apache-tomcat-8.0.50/bin/tomcat-juli.jar Tomcat started.tomcat start ok.5.设置tomcat开机⾃启动#在开机⾃启动⽂件中导⼊ tomcat的相关路径和所依赖的jdk相关路径[root@localhost ~]# cat /etc/rc.d/rc.local#!/bin/bash# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES## It is highly advisable to create own systemd services or udev rules# to run scripts during boot instead of using this file.## In contrast to previous versions due to parallel execution during boot# this script will NOT be run after all other services.## Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure# that this script will be executed during boot.touch /var/lock/subsys/localexport JAVA_HOME=/usr/lib/jvm/javaexport CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/binexport CATALINA_HOME=/usr/local/apache-tomcat-8.0.50/#tomcat⾃启动$CATALINA_HOME/bin/startup.sh# reboot后检查8080端⼝是否还在,在的话证明开机启动设置ok[root@localhost ~]# netstat -lntup|grep8080tcp6 00 :::8080 :::* LISTEN 625/java6.给tomcat⽹页设置登陆帐号密码b. 在tomcat安装包下⾯的conf⽂件下含有⼀个tomcat-usrs.xml⽂件,修改此⽂件即可,命令如下:vim tomcat-users.xml<role rolename="admin-gui"/><role rolename="manager-gui"/><user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>#如若我们现在想访问tomcat中图形化管理应⽤的功能,也就是Manager App,就需要指定manager-gui的权限,如果想访问host manager就必须指定admin-gui权限c.重启tomcat[root@localhost conf]# service tomcat restartd ⽹页验证7.使⽤eclipse打包java web项⽬以上所有⼯作完成之后,我们需要将⾃⼰要发布的项⽬打包,那么在MyEclipse中如何打包项⽬呢?a. 随便创建⼀个JavaWeb项⽬,如图所⽰:b. 在项⽬上单击右键选择【Export】-【MyEclipse JavaEE】⽂件夹-【WAR file】,单击【Next>】如图所⽰,选择存放打包程序的地址,单击【Finish】完成,即实现了打包,在完成之后可以去你打包的地⽅看⼀下是否打包成功。
idea打包java项目生成jar 原理-概述说明以及解释
idea打包java项目生成jar 原理-概述说明以及解释1.引言1.1 概述在Java开发中,项目的打包是必不可少的环节。
打包后的项目可以方便地部署和传输,使得程序在不同的环境中能够运行。
而JAR(Java Archive)文件则是一种常见的打包格式,它将Java项目的所有源代码、资源文件和依赖库等打包在一起,并且可以被Java虚拟机(JVM)识别和执行。
JAR打包对于Java项目的部署和运行起到了至关重要的作用。
在打包过程中,所有的源代码、配置文件、第三方库以及其他所需的资源文件都会被打包成一个可执行的JAR文件。
这个JAR文件可以被轻松地传输、备份和部署到其他环境中。
了解JAR打包的原理对于Java开发人员来说是非常重要的。
它可以帮助我们更好地理解项目的结构和组成,并且能够正确地配置和优化JAR 文件,以满足项目的需求和性能要求。
另外,掌握JAR打包的原理还有助于我们更好地理解Java的类加载机制,从而能够更好地调试和优化项目的运行效率。
本文将从概念和背景开始,介绍Java项目打包成JAR的原理。
我们将探讨JAR文件的组成和结构,以及JAR打包过程中的一些关键步骤和技巧。
最后,我们将总结JAR打包的重要性,并强调了解JAR打包原理的好处。
通过阅读本文,希望读者能够对Java项目的打包有更深入的了解,并能够在实际开发中灵活应用JAR打包技术。
1.2文章结构文章结构部分的内容主要是对本篇长文的章节和内容进行概括和介绍。
以下是文章结构部分的内容:1.2 文章结构本文主要围绕着"idea打包Java项目生成JAR"的原理展开讨论,旨在帮助读者了解Java项目打包成JAR文件的概念、背景和原理。
为了使读者更好地理解,本文按照以下章节进行组织和阐述。
第一部分是引言部分,包括概述、文章结构和目的。
在本部分,我们将对整篇文章进行简要回顾,并明确文章的目的和意义,以便读者能够更好地理解和把握文章内容的整体框架。
在Eclipse中将Java项目打包为jar
在Eclipse中将Java项目打包为jar方法一:如果自己的java project中需要引用额外的jar包作为资源文件,那么需要自己自定义配置文件MANIFEST.MF ,内容示例如下:Manifest-Version: 1.0Class-Path: lib\crimson.jar lib\jbcl.jar lib\junit.jarlib\log4j-1.2.13.jar lib\mysql-connector-java-3.1.13-bin.jarMain-Class: src.YourMainClassName其中的Class-Paht就指定了外来jar包的位置。
请注意假设我们的项目打包后为project.jar,那么按照上面的定义,应该在 project.jar的同层目录下建立一个lib文件夹,并将相关的jar包放在里面。
否则将会出现Exception in thread "main" ng.NoClassDefFoundError的错误。
最后介绍一下使用Eclipse制作jar包的过程吧:1. 首先在Eclipse中打开项目,右键点击项目,选择“Export”;2. 选择Java/JAR file,Next;3. Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了,免得增大空间;这里有几个选项:∙Export generated class files and resources 表示只导出生成的.class 文件和其他资源文件∙Export all output folders for checked projects 表示导出选中项目的所有文件夹∙Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了∙Export refactorings for checked projects 把一些重构的信息文件也包含进去在Select the export destination中选择导出的jar的路径,Next4. 下一页可以选择是否导出那些含有警告warning或者错误errors的*.class 文件。
java 项目发布流程
java 项目发布流程Java项目发布流程一、介绍在Java开发中,项目的发布是非常重要的一环,它涉及到将开发完成的代码部署到生产环境中,并保证项目能够正常运行。
本文将介绍Java项目发布的流程,包括项目准备、构建、打包以及部署等环节。
二、项目准备在开始发布Java项目之前,需要进行一些准备工作。
首先,确保开发环境和生产环境的配置是一致的,包括Java版本、操作系统、数据库等。
其次,确认项目的依赖库是否已正确配置,并且确保所有的依赖都已经安装和配置完毕。
最后,进行一次全面的测试,确保项目的功能和性能能够满足需求。
三、构建项目在项目准备完毕后,需要对项目进行构建。
构建过程中主要包括编译源代码、生成可执行文件、打包依赖库等步骤。
对于Java项目来说,常用的构建工具有Maven和Gradle。
通过配置构建工具的构建脚本,可以自动化完成上述步骤,大大提高了项目构建的效率。
四、打包项目项目构建完成后,需要将项目打包成可执行的文件。
对于Java项目来说,常见的打包方式有两种:JAR包和WAR包。
JAR包主要用于独立的Java应用程序,而WAR包主要用于Web应用程序。
通过打包工具,可以将项目的所有文件和依赖库打包成一个可执行的文件,方便部署和运行。
五、部署项目项目打包完成后,需要将项目部署到生产环境中。
首先,需要选择合适的服务器,并进行相关的配置,包括安装Java环境、配置数据库连接等。
然后,将打包好的项目文件上传到服务器上,并解压缩。
接下来,启动项目,并进行一次全面的测试,确保项目能够正常运行。
六、监控和维护项目部署完成后,需要进行监控和维护工作。
通过监控工具,可以实时监控项目的运行状态,及时发现和处理异常情况。
同时,定期对项目进行维护工作,包括数据库的备份和优化、系统的升级和补丁安装等。
这样可以确保项目的稳定性和安全性。
七、上线发布当项目经过充分测试和验证后,就可以进行上线发布。
在发布之前,需要进行一次全面的检查,确保项目的配置文件、数据库连接等都已正确设置。
如何使用脚本文件(jnlp)来发布Java程序
发布Java程序(桌面程序)最直接的方法就是将jar文件打包交给用户。
不过有时jar文件很多,也很大。
为了方便,sun提供了另外一种方式来通过网络发布Java程序。
这就是jnlp文件。
可能很多读者曾经下载过很多jnlp文件,运行后会自动从指定的网站下载相应的文件。
实际上,jnlp文件就是一个xml格式的脚本文件。
假设我们有一个test.jar 文件需要安装(该文件是一个基于SWT的桌面程序),那么要使用jnlp文件发布test.jar需要如下几步:一、为test.jar文件签名从网络上下载就意味着风险大大增加,因此,要想通过jnlp从网络上下载jar文件,并运行,就需要对该文件进行签名。
如果不签名,java程序将运行在sandbox中,也就是说无法访问本地资源,由于test.jar是swt程序,需要访问本地的dll(windows)或.so(linux)库,所以必须要对test.jar进行文件签名。
签名需要一个证书,如果没有证书,可以使用如下的命令生成一个证书在执行上面的命令后,会在当前目录下生成一个nokiaguy.keystore文件。
然后将test.jar复制到当前目录下。
现在当前目录有两个文件:nokiaguy.keystore和test.jar。
最后使用如下的命令对test.jar签名:在执行完上面的命令后,我们会发现test.jar文件的尺寸变大了。
二、建立虚拟目录下面就是在自己的机器上或服务器建立一个可访问的虚拟目录。
本文使用了IIS建立一个虚拟目录,可通过http://200.200.200.200/key访问该目录,在该目录下只有一个test.jar文件(经过签名后的jar文件)。
三、编写jnlp文件在任意目录下建立一个test.jnlp文件,并输入如下内容:其中根元素通过codebase指定了虚拟目录的url。
通过元素指定了要下载的test.jar文件。
如果存在多个jar文件,可以有多个元素。
Java项目打包发布到maven私仓常见的几种方式
Java项⽬打包发布到maven私仓常见的⼏种⽅式⽬录前⾔发布到maven私仓的步骤1.在maven的settings.xml中< servers >节点配置⽤户名和密码,形如下:2、指定发布到nexus私仓的url并进⾏发布⽅式⼀:pom.xml⽂件添加distributionManagement节点⽅式⼆:在maven的settings.xml中< profiles >节点配置< properties >,并在< properties >指定<altSnapshotDeploymentRepository > 和<altReleaseDeploymentRepository >⽅式三:通过mvn deploy指定参数⽅式四:通过nexus的可视化界⾯进⾏上传jar发布这⼏种发布⽅式的选择前⾔在早期没有使⽤maven之前,我们引⽤⼀些公有jar或者api jar,我们可能会采⽤这样的⽅式,通过⼿动导⼊这些jar到项⽬的classpath路径进⾏引⽤。
有了maven后,我们公司内部可能就会搭建maven私仓⽐如nexus,然后把这些公有jar或者api jar上传到nexus私仓,在pom.xml配置⼀下这些jar的坐标就可以引⽤。
今天我们的话题就是来聊聊项⽬打包发布到maven私仓常见的⼏种⽅式发布到maven私仓的步骤1.在maven的settings.xml中< servers >节点配置⽤户名和密码,形如下:<servers><server><id>nexus-releases</id><username>admin</username><password>admin123</password></server><server><id>nexus-snapshots</id><username>admin</username><password>admin123</password></server></servers>注:其中id可先看做是⼀个标识。
利用 java发布服务(jar包)
利用 JavaService 发布服务(jar包)前言:1.先了解什么叫做Windows服务?Microsoft Windows 服务(即,以前的NT 服务)使您能够创建在它们自己的Windows 会话中可长时间运行的可执行应用程序。
这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。
这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。
还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。
2.再来解释下jar可执行文件JAR又称为java归档文件,是与平台无关的文件格式。
以流行的ZIP 文件格式为基础。
与ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和JVM 这样的工具直接使用。
jar在java中作为一种项目的发布形式比较普遍,往往为了容易管理更需要作为一种系统服务发布——起码服务器重启了不用人工去重新打开你所要运行的jar 文件。
一、利用JavaService 发布服务(jar包)这里简单的介绍下怎么将jar发布到winNT平台服务上,有以下几个准备工作和注意的问题。
首先:我们需要哪些东西?1 下载JavaService//project/showfiles.php?group_id=137&release_id=1560获得windows的zip压缩版,文件名形如:JavaService-x.x.xx.zip,其中x.x.xx为版本号,当前版本为JavaService-2.0.10.zip,请使用最新版。
32位的操作系统和64位的需要不同的javaService.exe。
将JavaService-2.0.10.zip解压缩到c:\JavaService目录下。
(其实任意目录下都可以)3 编写java类/应用程序jar文件保存为任意目录,如:"d:\JavaTest\Test.java",并编译为Test.class;4 注册Windows服务进入c:\JavaService目录,执行如下命令:其中%JAVA_HOME% = D:\MyDrivers\jdk7JavaService.exe -install MyService "%JAVA_HOME%"\jre\bin\server\jvm.dll -Djava.class.path="%JAVA_HOME%"\lib\tools.jar;d:\JavaTest -start Test-install 开关后面的参数是要添加的服务名;-start 开关后面的参数是要启动的java类名;-Djava.class.path指定你所需要运行的jar包,以及它所依赖的第三方包;后面参数中的d:\javaTest是我的Test.class所在路径,实际应用中应该添加你的CLASSPATH。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java项目打包发布
如果只想发布为一个可执行的jar包,使用eclipse的Export功能就可以了
使用eclipse的Export功能,将项目中的所有package打包为一个pet.jar文件,假定项目中所有配置文件都在项目根目录的config文件夹.
新建一个文件夹bushu,将项目中的config文件夹放进来
用winrar打开项目引用的所有jar文件,将文件中的所有包文件夹添加进pet.jar 文件
创建pet.dat文件,内容:start java -Xmx512m -jar pet.jar
运行pet.dat
如果最终想发布为可执行程序我使用开源项目jsmooth提供的软件项目地址
使用eclipse的Export功能,将项目中的所有package打包为一个pet.jar文件,我的项目中所有配置文件都在项目根目录的config文件夹.
新建一个文件夹bushu,将项目中的config文件夹、引用的外部jar包和pet.jar 文件都放进来,所有包文件都放到bushu下的lib目录下
打开jsmooth,新建一个项目,设置好后编译就可以生成exe文件,附件中我截取了所有jsmooth配置的图片.
首先,将编译好的程序打包成jar文件,然后做出exe,这样代码就不可见了;但是exe文件在没有安装jre的电脑上不能运行,如果要求客户再去安装jre
设置环境变量就不雅了。
我们需要将jre打包。
这几步操作网上介绍的插件和方法很多,但有的好用有的不好用,而且有的还需要注册。
经过尝试比较,在“千里冰封”的博客上得到了很大的帮助。
整理一下。
使用这几个工具,您也可以顺利的发布您的java程序!
1 打包成双击可执行的jar文件。
推荐插件:fatJar(Eclipse使用)
下载地址
/project/showfiles.php?group_id=115990&package_id=125924
我用的是Eclipse,它自带的打包方法在打包一些图片等资源时不是很爽。
可以使用这个插件。
安装方法解压后将plugins文件夹下的net.sf.fjep.fatjar_0.0.24文件夹拷到eclipse安装目录的plugins 下。
用此工具可以方便的将eclipse中的工程打包成jar文件。
如果是要打成可执行的jar 请注意选取主类。
你的项目=〉Export..=>向导里有fat jar =>...
2 将jar文件转换成exe文件。
exe4j的使用方法
推荐工具:exe4j
用exe4j把java打包成exe
/hadeslee/archive/2007/10/12/152228.html
在我们写程序的时候,有时会有一种需求,那就是希望我们的程序是一个可执行文件,而不是一个
jar文件,其实大部份时候,可执行的jar文件都可以满足要求,但是如果我们的程序是需要保护的,那么打包成jar文件就不太安全了,因为jar文件就是一个解压缩文件,一解压就什么都能看到了,当然也可以选择混淆,但是混淆了以后排错就没那么容易了,因为混淆的时候,把一些类的信息都混淆了。
如何既保证代码的安全又容易排错呢?那么打包成exe就是一种很好的办法了,其实我今天介绍这个方法并不是希望大家去打包成exe文件,因为exe文件毕竟不是跨平台的,用了exe的格式就失去了java的初衷了。
exe4j可以打包成各种格式的exe,可以把jar打包进exe,也可以引用一个外部的
jar文件,还可以打包成windows服务的程序,并且可以设置最低jre的版本,还可以设定启动画面,虽然java6.0已经实现了这一点,但是还是没有exe4j生成的启动画面快。
3 将exe文件并jre打包成安装文件,可以在没有安装java虚拟机的电脑上运行
推荐工具:install4j
Install4j介绍
/hadeslee/archive/2007/10/15/152855.html
install4j是一个功能强大的,多平台Java安装文件生成工具,用于生成Java应用程序本地化的安装及应用程序发布。
install4j
的优异性在于它易于使用,紧密的集成到目标平台,以及灵活的JRE 管理与部署选项。
创建发布树
install4j的图形用户界面允许你:
* 完全自定义发布树
在发布树的每一个目录中,你能设置整个目录内容或是磁盘上任何目录的单个文件。
定义的视图与结果视图让你能完全控制安装程序将发布的文件。
* 处理特定平台的差异
install4j提供方便的“包含/排除”机制,使其适应平台方式来进行发布。
* 针对Unix, Linux 及Mac OS X所定义的文件权限
对发布树的每一个元素,当其安装在类似于Unix这样的平台上时,你能自定义用户访问的权限。
* 定义优良的卸载策略
对发布树的每一个元素,你能决定在卸载时是否删除它。
* 定义覆盖策略
对发布树的每一个元素,你能配置不同的覆盖策略,当安装过程中需要覆盖文件时,这些覆盖策略会指示nstall4j进行相应的操作。
* 定义安装的组件
你能定义文件及目录的分组,形成分离的安装组件,这样你就可提供给用户来选择只安装一定的组件。
其实一个好的应用如果不太好布署,那么别人也只能对它望而兴叹了,现在有了
install4j,很多布署的问题几乎全部解决了.我们可以用exe4j打包java应用,然后用install4j发布java应用,以前java程序布署难的问题,现在几乎都解决了.install4j不但用于打包很合适,并且它还提供了一组很强大很实用的与平台相关的api.这些对于扩展我们的程序也是有很大的帮助的.
install4j Enterprise Edition序列号
这东西搜索了半天才搞到,我安装的是3.2的,下面的序列号一样可以使用,共享一下,省得大家再去找了
install4j Enterprise Edition 3.1.3注册码、序列号、破解版、注册机。