编写功能类:
package com.hpay.FileToZkUtil; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.concurrent.CountDownLatch; import org.apache.log4j.Logger;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat; public class FileToZkUtil
{
private static final Logger logger = Logger.getLogger(FileToZkUtil.class); private static CountDownLatch connectedSemaphore = new CountDownLatch( 1 ); /**
*
* @param zkUrl zookeeper地址
* @param zkNode zookeeper节点
* @param filePath 文件路径
*/
@SuppressWarnings("unused")
public static void setFileToZkNode(String zkUrl, String zkNode, String filePath) { Watcher watch = new Watcher() {
public void process(WatchedEvent event) {
// System.out.println(event.getPath());
logger.info(">>>>> " + event.getPath() +">>>>>" + event.getType());
if (KeeperState.SyncConnected == event.getState()) {
connectedSemaphore.countDown();
}
}
};
ZooKeeper zk;
try {
//读取目标文件
byte[] data = readFile(filePath);
if (data != null) {
zk = new ZooKeeper(zkUrl, 3000, watch);
connectedSemaphore.await();
logger.info("zk连接创建成功:" + zkUrl);
//测试是否存在目标节点
Stat stat = zk.exists(zkNode, true);
logger.info("目标节点状态:" + stat);
//设置目标节点数据
zk.setData(zkNode, data, -1);
} else {
logger.info("获取" + filePath + "数据失败!");
} } catch (IOException e) {
e.printStackTrace();
logger.error("绑定zk节点出错:" + e.getMessage());
} catch (KeeperException e) {
e.printStackTrace();
logger.error("绑定zk节点出错:" + e.getMessage());
} catch (InterruptedException e) {
e.printStackTrace();
logger.error("绑定zk节点出错:" + e.getMessage());
}
} //读取文件
private static byte[] readFile(String filePath) {
File file = new File(filePath);
byte b[] = null;
if (file.isFile() && file.exists()) {
FileInputStream fis;
try {
fis = new FileInputStream(file);
int count = fis.available();
int readCount = 0;
b = new byte[count];
while (readCount < count) {
readCount += fis.read(b, readCount, count - readCount);
}
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
logger.error("读取文件出错:" + e.getMessage());
} catch (IOException e) {
e.printStackTrace();
logger.error("读取文件出错:" + e.getMessage());
}
}
return b;
}
}
编写main方法类:
public class MianClass {
public static void main(String[] args) {
// FileToZkUtil.setFileToZkNode("10.48.172.101:2161", "/test", "E:/test/zookeeper/t.txt");
FileToZkUtil.setFileToZkNode(args[0], args[1], args[2]);
}
}
在pom文件中配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.hpay.FileToZkUtil.MianClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
打包方式:
1.进入到项目所在目录,例如:
cd D:\workspace\riskCompensate\FileToZkUtil
2.运行命令
mvn assembly:assembly
3.在项目的target目录中可以看到如下文件
说明打包完成.
运行方式:
1.在cmd命令窗口进入target目录
cd cd D:\workspace\riskCompensate\FileToZkUtil\target
2.输入
java -jar FileToZkUtil-0.0.1-SNAPSHOT-jar-with-dependencies.jar 10.48.172.101:2161 /test E:/test/zookeeper/t.txt
即可执行该jar,其中 10.48.172.101:2161 /test E:/test/zookeeper/t.txt 为main方法的三个参数
需要注意的事项:
1.如果项目中依赖了其他maven项目,需要先将依赖的项目编译.
选中依赖的项目执行 maven install
2.需要将依赖的jar,如该项目中的zookeeper的pom文件中scope属性修改为compile
maven项目打包成可执行的jar的更多相关文章
-
如何将maven项目打包成可执行的jar
如何将maven项目打包成可执行的jar 分类: maven2010-12-17 10:18 10411人阅读 评论(2) 收藏 举报 jarmavenassemblyjava 方法一:将项目及所依赖 ...
-
Maven项目打包成可执行Jar文件
在使用Maven完成项目以后,如果需要打包成可执行的Jar文件,我们通过eclipse的导出很麻烦,还得指定入口文件的位置,还得说明依赖的jar包,既然都使用Maven了,很重要的一个目的就是让这些繁 ...
-
将Maven项目打包成可执行jar文件(引用第三方jar)
方法一. mvn assembly 或 mvn package (一个jar包) 把依赖包和自己项目的文件打包如同一个jar包(这种方式对spring的项目不支持) <build> ...
-
在IDEA中如何将Spring boot项目打包成可执行的jar包并发布到linux服务
这两年微服务很流行,这里简单介绍一下如何将自己使用idea写的微服务打包成一个可执行的jar包,并发布到linux服务器的步骤.因为spring boot有内置的tomcat所以一般使用内置的tomc ...
-
将Maven项目打包成可执行 jar文件(引用第三方jar)
使用maven assembly插件完成打包 修改pom: <build> <pluginManagement> <plugins> <!--设置jdk版本, ...
-
hadoop-maven项目打包成可执行的jar
环境: cdh5.1.0 jdk1.7 <build> <plugins> <!--指定JDK为1.7 --> <plugin> <groupId ...
-
通过idea 打包 spring maven项目打包为可执行jar包
用assembly打包一直报错: shangyanshuodeMacBook-Pro:target shangyanshuo$ java -jar jobscrawler-1.0-SNAPSHOT-j ...
-
怎么将maven项目打包成war包
问题:我在eclipse上能运行,然后我想将这个maven项目打包成war然后放到另外一台机子上(其实是手动放在tomcat的webapp目录中),提供外部访问.现在问题是,一直maven项目打包一直 ...
-
java项目打包成可运行的jar,main方法带参数
转载 原文地址:http://www.cnblogs.com/neillee/p/6063808.html#commentform 将 java 项目打包成可运行的 jar 包(main 函数带参数) ...
随机推荐
-
ABP框架理论研究总结(典藏版)
目前,我已经完成了Module-Zero的翻译,请查看我的<Module-Zero学习目录>. 到现在为止,使用ABP框架开发正式项目已经3个月有余了,期间翻阅了大量文档资料,包括ABP官 ...
-
diskpart查看硬盘序列号
WIN + R键运行cmd,进如DOS界面: 1. systeminfo查看OS初始安装时间 2. diskpart工具查看硬盘序列号 (1)diskpart (2)lisk disk 查看主机安装的 ...
-
gruntjs
先输入命令: npm install -g grunt-clinpm install grunt --save-devgrunt –version 新建json文件:package.json { &q ...
-
PHP全栈从入门到精通1
thinkphp框架,是一堆代码(常量,方法,和类)的集合,框架是一个半成品的应用,还包含一些优秀的设计模式. 框架的使用,代码风格不一样,维护难,项目生命周期短,功能扩展存在局限,好处为,简单,快捷 ...
-
6th week blog(2)
fixed:元素将从常规文档流中删除,并且不会为页面布局中的元素创建任何空间.它的位置相对于初始位置.它允许框架样式布局.在页式媒体如打印输出中,一个固定元素会出现于第一页的相同位置.这可以用来创建一 ...
-
k-means性能测试
clf = MiniBatchKMeans(n_clusters=5000, batch_size=5000, n_init=1, max_iter=200, max_no_improvement=1 ...
-
BZOJ.1061.[NOI2008]志愿者招募(线性规划 对偶原理 单纯形 / 费用流SPFA)
题目链接 线性规划 用\(A_{ij}=0/1\)表示第\(i\)天\(j\)类志愿者能否被招募,\(x_i\)为\(i\)类志愿者招募了多少人,\(need_i\)表示第\(i\)天需要多少人,\( ...
-
UVALive 2318 水题
给出c 个竞争者.v 个投票人.每个投票人的投票顺序.问你谁会胜出.在第几轮.完全是个水题.比赛的时候debug接近两个点没过.因此差点放弃了整场比赛.猜测是错在找最大和第二大的序号哪里错的.因为我换 ...
-
软工作业No.1。Java实现WC.exe
网址:https://github.com/a249970271/WC WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有w ...
-
python第二十一课——str中的常用函数(重要)
演示str中常用的一些函数: 1.join():将容器对象以某种特定的格式(字符串)进行拼接组合,最后以字符串的形式返回 lt=['i','love','you','very','much'] str ...