最近要跑爬虫程序,需要打包成jar发在linux服务器中运行。主要是第三方的lib包与配置文件,不进行打包,方便修改。

1.eclipse中src中源码编译后生成的源码在bin文件中,把里面源码单独拿出。

2.编写MANIFEST.MF文件

Manifest-Version:  1.0
Class-Path: lib/commons-codec-1.9.jar lib/commons-logging-1.2.jar lib/fluent-hc-4.5.3.jar lib/httpclient-4.5.3.jar lib/httpclient-cache-4.5.3.jar lib/httpclient-win-4.5.3.jar lib/httpcore-4.4.6.jar lib/httpmime-4.5.3.jar lib/jna-4.1.0.jar lib/jna-platform-4.1.0.jar
Main-Class: com.zyw.main.Main

这里需要注意MANIFEST.MF文件的格式有:

  1. Manifest-Version,classPath,Main-Class冒号后面都有空格
  2. Main-Class后一行必须是空行
  3. Main-Class后面为主类完整路径名

如下图:

3.在程序中读取配置文件示例

public void getConf(){
// 获得当前目录路径
String rootPath = System.getProperty("user.dir").replace("\\", "/");
String jdbc=rootPath+"/conf/jdbc.conf";
Properties env = new Properties();
FileInputStream fis = null;
try {
fis = new FileInputStream(jdbc);
env.load(fis);
} catch (Exception ex) {
} finally {
try {
if(fis!=null){
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(env.getProperty("jdbc.usename"));
System.out.println(env.getProperty("jdbc.password"));
}

4.Jar命令打包与运行

jar cvfm JarDemo.jar MANIFEST.MF   com/   ##打包命令
java -jar JarDemo.jar ##运行命令

Java程序命令行打包Jar的更多相关文章

  1. 一些坑 Java 执行命令行命令 Spring Boot 打包为jar ResourceUtils.getFile 等出现的问题

    Java 执行命令行命令 这个没技术含量的东西耗费了我半个多小时 String command = ....; Process process = Runtime.getRuntime().exec( ...

  2. 通过JAVA调用命令行程序

    这是我在把数据导入到数据库时遇到问题,总结下来的.包含两个方法,一个方法是读取文件路径下的文件列表,主方法是执行cmd命令,在导入时想得到导入一个文件的时间,涉及到线程阻塞问题,这个问题理解不是很深, ...

  3. C语言基于窗体命令行打包,解包和浏览程序

    #include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>#inc ...

  4. Java命令行启动jar包更改默认端口以及配置文件的几种方式

    Java命令行启动jar包更改默认端口以及配置文件的几种方式 java -jar xxx.jar --server.port=8081 默认如果jar包没有启动文件,可以采用这种方式进行启动 java ...

  5. android 7.0 多渠道打包 - 美团开源工具Walle 命令行打包

    在Android 7.0(Nougat)推出了新的应用签名方案APK Signature Scheme v2后,之前快速生成渠道包的方式(美团Android自动化之旅-生成渠道包)已经行不通了,对此美 ...

  6. mac下使用命令行打包出现bash gradle command not found的解决方案

    命令行打包的时候出现 bash gradle command not found这个问题,主要是因为gradle环境丢失.需要重新配置gradle的环境变量. 1. gradle路径的查找 然后gra ...

  7. 你使用 Web 平台安装程序命令行工具

    你使用 Web 平台安装程序命令行工具 获取的软件由其所有者授权给你.Microsoft 未授予你第三方软件的任何权利.已成功加载主源: https://go.microsoft.com/?linki ...

  8. Linux java 命令行编译 jar包

    Java 命令行编译成class,然后在打包成jar文件. 编译成class javac -classpath $CLASS_PATH -d class ./src/Hello.java 可以通过ja ...

  9. Java环境变量配置以及作用、JDK与JRE区别以及命令行引入jar包

    在配置环境变量中: 设置JAVA_HOME: 一是为了方便引用,比如,JDK安装在C:\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后要使用这个路径的时候, 只需输入%JAV ...

随机推荐

  1. [HTML5] Why ARIA?

    For some reason, you build a custom checkbox component, if without ARIA in mind, basiclly this site ...

  2. .NET泛型初探

    总所周知,.NET出现在.net framework 2.0,为什么要在2.0引入泛型那,因为微软在开始开发.net框架时并没有想过多个类型参数传输时对方法的重构,这样一来,开发人员就要面对传输多种类 ...

  3. ContextMenu的使用具体解释

    二话不说,先上图: 能够非常easy看到这是一个类似于Dialog悬浮在活动上的控件,它是由被注冊的view长按所触发的. 当然啦,也有其它的实现方式,这里就先介绍一下系统的ContextMenu:( ...

  4. 堆排序(Swift版本)

    一:什么是堆? 堆可视为  "以数组方式存储的一棵完全二叉树" 堆又分为最大堆和最小堆, 最大堆就是对于整个二叉树中的每一个节点都满足:节点的键值比其左右子节点的键值都要大,对应的 ...

  5. ros中文术语表及消息类型表

    前言:整理一些ros常用表格,包括中文术语对照表. 一.中文术语表 二.消息类型表 -END-

  6. BZOJ 1806 DP

    思路: f[i][a][b][c][d] 表示在第i天 昨天1矿吃的是a 前天1矿吃的是b 昨天2矿吃的是c 前天2矿吃的是d 的最优解 暴力转移 哦 需要优化一下空间- 变成i%2 就好了 //By ...

  7. 数据库 The Network Adapter could not establish the connection解决方案

    连接数据库 注意 url ip地址换的时候 oracle 里的listener.ora thnsnames.ora也要随之变化 重启数据库 不然可能会报出 java.sql.SQLException: ...

  8. 未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"提供程序的解决方法

    以下代码,打断点出现报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 DataSet ds=new DataSet(); try { string strCon = ...

  9. 2017.7.15清北夏令营精英班Day1解题报告

    成绩: 预计分数:20+10+40 实际分数:100+10+40. 一百三十多人的比赛全场rand7还水了个鼠标+键盘 unbelievable! 考试题目链接: https://www.luogu. ...

  10. datatable.rows.indexof(dr)返回的是啥?

    返回的是Int类型的 行索引值,从0开始.也就是说,第一行是0.最后一行就是rows.count - 1.不会返回-1."这是第" + OldDt.Rows.IndexOf(ite ...