2024-04-05 02:17:06 | 我爱编程网
// 用法:Runtime.getRuntime().exec("命令");
String shpath="/test/test.sh"; //程序路径
Process process =null;
String command1 = “chmod 777 ” + shpath;
try {
Runtime.getRuntime().exec(command1 ).waitFor();
} catch (IOException e1) {
e1.printStackTrace();
}catch (InterruptedException e) {
e.printStackTrace();
}
String var="201102"; /参数
String command2 = “/bin/sh ” + shpath + ” ” + var;
Runtime.getRuntime().exec(command2).waitFor();
用shell脚本怎样编译java工程
编译java工程一般直接用IDE或者用Ant、Maven之类的工具,很少有人用纯shell来编译java工程。正好遇到这样一个应该,用这篇博文做一下记录。
案例:用eclipse写了一个java project,然后编译打成jar包。
这个可以采用eclipse自带的Export就可以导出jar了。但是为了软件自动化等巴拉巴拉的原因,采用存shell脚本编译。
如图所示,java project的名称为iec104,下面src是源文件目录,bin是所引用的jar包目录,现在要进行编译,并且打成jar,如果对jar有所了解,都知道jar有个MANIFEST.MF文件,iec104工程的MF文件内容如下:
就是制定了运行的main-class(有public static void main(String args[])的类)。
将这个文件拷贝到iec104的根目录下,然后执行脚本compile.sh,内容如下:
#!/bin/bash
cur_dir=$(pwd)
echo $cur_dir
function do_compile_iec104(){我爱编程网
# echo $cur_dir
iec104=$cur_dir/iec104
iec104_src=$cur_dir/iec104/src
iec104_bin=$cur_dir/iec104/bin
# echo $iec104_src
# echo $iec104_bin
iec104_class=$cur_dir/iec104/class
# 将iec104的src目录下的所有java文件的名称存入到iec104/src/sources.list文件中
rm -rf $iec104_src/sources.list
find $iec104_src -name "*.java" > $iec104_src/sources.list
cat $iec104_src/sources.list
# $iec104_class是存放编译的class文件的目录
rm -rf $iec104_class
mkdir $iec104_class
# 这里开始编译java文件,注意这里的-encoding utf-8,刚开始并没有加入这个,然后就报了一堆错误,纠结了很久才发现,这里给各位提个醒了。
javac -d $iec104_class -encoding utf-8 -classpath $iec104_bin/classes12.jar:$iec104_bin/junit-4.10.jar:$iec104_bin/log4j-1.2.17.jar:$iec104_bin/mysql-connector-java-5.0.5-bin.jar:$iec104_bin/RXTXcomm.jar -g -sourcepath $iec104_src @$iec104_src/sources.list
# 由于用到了log4j,所以要将log4j的配置文件一并放入,如果没有用到,可以忽略这句
cp $iec104_src/log4j.properties $iec104_class
# 如果原来在iec104目录下有jar报就删除掉,因为要生成新的
rm $iec104/iec104.jar
# 这里要cd到存放class的目录,否则如果采用绝对路径编译,编译出来的jar包里面就是绝对路径了,这样就会有问题
# jar -cvfm $iec104/iec104.jar $iec104/MANIFEST.MF $iec104_class/*这样是错误的
cd $iec104_class
jar -cvfm $iec104/iec104.jar $iec104/MANIFEST.MF *
# 赋予可执行权限
sudo chmod a+x $iec104/iec104.jar
}
do_compile_iec104
exit 0
运行这个脚本(linux下)就可以编译并且在iec104的目录下就可以看到iec104.jar文件了。
这里补充下java命令的基本知识:
javac 用于编译Java文件,格式为:
java [options] [sourcefiles] [@files]
其中:
options:命令行选项;
sourcefiles:一个或多个要编译的源文件;
@files:一个或多个对源文件进行列表的文件,有时候要编译的文件很多,一个个敲命令会显得很长,也不方便修改,可以把要编译的源文件列在文件中,在文件名前加@,这样就可以对多个文件进行编译,对编译一个工程很有用,方便,省事。
有几个比较重要的选项:
-d 用于指定编译成的class文件的存放位置,缺省情况下不指定class文件的存放目录,编译的class文件将和源文件在同一目录下;
-classpath 可以简写成-cp,用于搜索编译所需的class文件,指出编译所用到的class文件的位置,如jar、zip或者其他包含class文件的目录,指定该选项会覆盖CLASSPATH的设定;
-sourcepath用于搜索编译所需的源文件(即java文件),指定要搜索的源文件的位置,如jar、zip或其他包含java文件的目录;
需要注意windows下和linux下文件路径分隔符和文件列表(即-classpath和-sourcepath指定的文件)分隔符的区别:
windows下文件路径分隔符用 \ ,文件列表分隔符用分号 ;
linux下文件路径分隔符用 / ,文件列表分隔符用冒号 :
前言 本文教你怎么用javac和java命令 以及如何利用脚本(shell或bat)方便处理 并用简单的实例展示这些用法
IDE是把双刃剑 它可以什么都帮你做了 你只要敲几行代码 点几下鼠标 程序就跑起来了 用起来相当方便 你不用去关心它后面做了些什么 执行了哪些命令 基于什么原理 然而也是这种过分的依赖往往让人散失了最基本的技能 当到了一个没有IDE的地方 你便觉得无从下手 给你个代码都不知道怎么去跑 好比给你瓶水 你不知道怎么打开去喝 然后活活给渴死
之前用惯了Myeclipse Java文件编译运行的命令基本忘得一干二净 现在项目出了原型 放到服务器上去测试 SSH一登陆上服务器就傻眼了 都是命令行 以前程序图标什么的都成了浮云 程序放上去了不知道怎么去编译运行 只能补补课了 下面做下补课笔记
一 javac命令javac 用于编译Java文件 格式为 java [options] [sourcefiles] [@files]其中 options 命令行选项 sourcefiles 一个或多个要编译的源文件 @files 一个或多个对源文件进行列表的文件 有时候要编译的文件很多 一个个敲命令会显得很长 也不方便修改 可以把要编译的源文件列在文件中 在文件名前加@ 这样就可以对多个文件进行编译 对编译一个工程很有用 方便 省事
有几个比较重要的选项 d 用于指定编译成的class文件的存放位置 缺省情况下不指定class文件的存放目录 编译的class文件将和源文件在同一目录下 classpath 可以简写成 cp 用于搜索编译所需的class文件 指出编译所用到的class文件的位置 如jar zip或者其他包含class文件的目录 指定该选项会覆盖CLASSPATH的设定 sourcepath用于搜索编译所需的源文件(即java文件) 指定要搜索的源文件的位置 如jar zip或其他包含java文件的目录 需要注意windows下和linux下文件路径分隔符和文件列表(即 classpath和 sourcepath指定的文件)分隔符的区别 windows下文件路径分隔符用 \ 文件列表分隔符用分号 linux下文件路径分隔符用 / 文件列表分隔符用冒号 二 java命令java 用于执行程序 格式如下 java [options] classfile options 命令行选项 一般用于 classpath 指定要执行的文件所在的位置以及需要用到的类路径 包括jar zip和class文件目录 会覆盖CLASSPATH的设定三 脚本如果要敲的命令很长 每次要编译运行的时候都要重新敲一遍 这是一件很痛苦的事情 所以用脚本可以大大方便你的工作量 在linux下用shell脚本 windows下用bat批处理程序 因为是在linux下 我这里只是简单介绍一下shell 关于bat批处理程序的语法自己百度一下 不难
开头linux有很多不同的shell 通常使用bash(bourne again shell) 程序必须以下面的行开始 #!/bin/sh #!用来告诉系统用后面的参数来执行程序 这里使用的是/bin/sh要使你的脚本能够执行 还必须让这个文件有可执行权限 使用下面命令更改文件权限 chmod +x filename 注释以#开始的句子表示注释 一直到这行结束 多写注释有利于以后重新看的时候知道自己在做什么 变量shell的脚本的变量都是字符串 不用申明类型 定义的时候直接 变量=值 即可 用到变量的的时候用 $变量 或者 ${变量} echo命令用于打印 举个例子 #!/bin/sh # 定义变量words 值为hello world words= hello world # 打印变量words的值echo $words 命令shell脚本里面可以直接任意使用linux命令 要用到什么命令直接敲进去即可 记住一些常用的命令 cd 打开目录ls l 显示目录信息rm fr 递归删除目录及下面的文件 不提示信息mkdir 创建目录pwd 显示当前路径kill pid 强制杀掉某个进程号的进程pkill 杀掉某个名字的进程ps aux 显示运行进程信息netstat pan 查看网络端口监听情况四 例子下面是文件pile 用于编译整个java工程 把编译的文件放到指定目录下
view plain #!/bin/sh # Define some constants ONSSERVER=ONSServer PROJECT_PATH=/root/iot oid JAR_PATH=$PROJECT_PATH/lib BIN_PATH=$PROJECT_PATH/bin SRC_PATH=$PROJECT_PATH/src/$ONSSERVER
# First remove the sources list file if it exists and then create the sources file of the project rm f $SRC_PATH/sources find $SRC_PATH/ name * java > $SRC_PATH/sources list
# First remove the ONSServer directory if it exists and then create the bin directory of ONSServer rm rf $BIN_PATH/$ONSSERVER mkdir $BIN_PATH/$ONSSERVER
# Compile the project javac d $BIN_PATH/$ONSSERVER classpath $JAR_PATH/jdom jar $JAR_PATH/oro jar @$SRC_PATH/sources list下面是文件run 用于执行程序 view plain #!/bin/sh
# Define some constants ONSSERVER=ONSServer PROJECT_PATH=/root/iot oid JAR_PATH=$PROJECT_PATH/lib BIN_PATH=$PROJECT_PATH/bin
lishixinzhi/Article/program/Java/hx/201311/27024
用记事本写java代码怎么运行?用记事本写完代码后运行方法如下:1、用浏览器打开用记事本编写的代码新建“文本文档”后,鼠标右键点击该文本文档,在菜单栏的“打开方式”选择“用记事本打开”,也可以设置默认打开方式为“记事本”;用记事本打开文本文档后,直接在该文档内根据自己的需要输入想要编辑的网页代码。2、记事本写java代码怎么运行首先,需要安装jdk并配置环境变量
ubuntu下用python写了个生成动态壁纸的脚本,如果通过代码实现使用这个xml,而不是通过桌面->背景->添加sudomkdir/usr/share/backgrounds/mybackground-imgssudocd/usr/share/backgrounds/mybackground-imgssudocp/home/你的背景图片所在目录/*.sudo./backgro
java的主程序入口,参数?其中,Yippee是类名,public是它的修饰符,每个java文件中,最多可以有一个public的类,且这个类的名称要和java文件名一样。main方法,是java程序的入口,String[]args,是它的参数,一个字符串数组。一楼的兄弟的说法是错误的。他运行没有结果,是因为这个程序他应该是在IDE工具中运行的,运行时,工具会自己给这个方法传入一个空数组的
python怎么运行代码?工具/原料pythonpycharm截图工具WPSIDLE方法/步骤1、在电脑左下角开始菜单,输入框中输入cmd,找到终端并打开2、在终端命令行输入python,进入到python环境,可以直接输入python代码,按回车执行3、在开始菜单,找到安装好的python,展开并选择IDLE(Python3.864-bit)4、打开IDL
Java程序在eclipse中怎么运行?中文版:1、打开“运行”菜单,点击“运行(N)...”按钮,进入运行配置界面。2、在左侧选择要运行的程序,然后点击右侧“(x)=自变量”标签,在下面的“程序自变量(A):”文本框中输入程序运行需要的参数。3、点击下面的“运行(R)”按钮运行程序。英文版:1、打开“Run”菜单,点击“Run...”按钮,进入运行配置界面。
pysimplegui中如何创建python脚本要在Python中使用PySimpleGUI创建图形用户界面(GUI)应用程序,您需要遵循以下步骤:1.**安装PySimpleGUI**:首先,确保您已经安装了PySimpleGUI库。您可以使用pip来安装它,运行以下命令:```pythonpipinstallPySimpleGUI```2.**导入PySimpl
sh脚本如何自动执行java程序,并且该脚本如何被定期调用?各位好我有一个问题,是这样: 环境:有一套管理系统(包括联机和批量),该管理系统白天运行联机系统,晚上运行批量系统。 目的:联机系统运行到晚上,会停掉,这时候通过在unix下的sh脚本调用并且启动批量系统。 sh脚本可以调用java程序,通过java程序就可以启动了批量系统。 andilyliao写道最简单的方法你可以用java写一
Python中怎么调用C代码?Python中调用C代码方法Python是一门较为简单的编程语言,如今很多小学都已经开始教授python了,可见它的热度之高。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。而如果你是零基础想要自学Python的话,那么就建议你进行专业系统的视频课程学习!为帮助广大Python学习爱好者提升,精选到了几套专业优质的Python自学视频课程,学
2024-03-02 02:58:47
2024-01-01 09:58:48
2024-03-21 00:22:13
2024-01-26 10:37:53
2024-03-31 15:14:06
2024-03-04 07:43:42