(一)shell脚本启动java程序
linux下通过.sh文件启动java程序的步骤:
1、在linux系统上安装JDK,并配置环境变量。可以参考:http://blog.youkuaiyun.com/u013713294/article/details/52514608
2)把java程序打成jar包。可以参考:http://jingyan.baidu.com/article/219f4bf7d0ef87de442d3820.html
3)指定好主类入口并添加java项目依赖的jar包
①指定主类入口
java应用项目打包成一个jar,必须指定一个拥有main函数的main class作为你这个jar包的程序入口,具体的方法是修改jar包内目录META-INF下的MANIFEST.MF文件。
在MANIFEST.MF里面添加如下一句话:Main-Class:firstpack.HelloWorld,如下图:
注释:
1)Main-Class格式:Main-Class:+空格+包名+包含主函数的类名
②添加依赖的jar包
用AppClassloader来加载第三方依赖的jar。例如:在MANIFEST.MF中添加如下代码:Class-Path:lib/some.jar,如果有多个jar包需要引用的情况:Class-Path:lib/some.jar lib/some2.jar,jar之间用空格隔开。
4)编写sh脚本文件,执行即可。
此处用shell脚本调用HelloWorld程序,演示:
①脚本:
#!/bin/bash
java-jar RunJava.jar
----------------------------------------------------------------------------------------------------------------------
②linux里运行截图:
(二)java程序调用shell脚本
1、linux下截图
2、执行结果:
(三) 对shell脚本加密
1、用gzexe命令加密:
2、用shc加密
[root@bogonshc-3.8.7]# ls
CHANGES l.sh match match.x.c shc shc-3.8.7.c shc.html test.bash test.ksh
pying Makefile match.x pru.sh shc.1 shc.c shc.README test.csh
[root@bogonshc-3.8.7]# ./l.sh
-bash:./l.sh: Permission denied
#加密
[root@bogonshc-3.8.7]# ./shc -v -r -T -f l.sh
shcshll=bash
shc[-i]=-c
shc[-x]=exec '%s' "$@"
shc[-l]=
shcopts=
shc:cc l.sh.x.c -o l.sh.x
shc:strip l.sh.x
shc:chmod go-r l.sh.x
[root@bogonshc-3.8.7]# ls
CHANGES l.sh.x match pru.sh shc-3.8.7.c shc.README test.ksh
Copying l.sh.x.c match.x shc shc.c test.bash
l.sh Makefile match.x.c shc.1 shc.html test.csh
#执行加密生成的二进制文件
[root@bogonshc-3.8.7]# ./l.sh.x
helloworld
#查看加密后的二进制文件,显示的结果如下
[root@bogonshc-3.8.7]# vi l.sh.x
^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@<87>^D^H4^@^@^@t^W^@^@^@^@^@^@4^@ ^@^H^@(^@^\^@^[^
@^F^@^@^@4^@^@^@4<80>^D^H4<80>^D^H^@^A^@^@^@^A^@^@^E^@^@^@^D^@^@^@^C^@^@^@4^A^@^@4<81>^D^H4<81>^
D^H^S^@^@^@^S^@^@^@^D^@^@^@^A^@^@^@^A^@^@^@^@^@^@^@^@<80>^D^H^@<80>^D^H ^R^@^@ ^R^@^@^E^@^@^@^@^
P^@^@^A^@^@^@ ^R^@^@ ¢^D^H ¢^D^H¸^C^@^@^D^E^@^@^F^@^@^@^@^P^@^@^B^@^@^@´^R^@^@´¢^D^H´¢^D^HÈ^@^@^
@È^@^@^@^F^@^@^@^D^@^@^@^D^@^@^@H^A^@^@H<81>^D^HH<81>^D^HD^@^@^@D^@^@^@^D^@^@^@^D^@^@^@PåtdÔ^Q^@
^@Ô<91>^D^HÔ<91>^D^H,^@^@^@,^@^@^@^D^@^@^@^D^@^@^@Qåtd^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^F
^@^@^@^D^@^@^@/lib/ld-linux.so.2^@^@^D^@^@^@^P^@^@^@^A^@^@^@GNU^@^@^@^@^@^B^@^@^@^F^@^@^@^R^@^@^
@^D^@^@^@^T^@^@^@^C^@^@^@GNU^@ɪÓÍEÏO*Iê^DH^D§òZ.±Ø^C^@^@^@^V^@^@^@^A^@^@^@^E^@^@^@p`^B"^V^@^@^
@^X^@^@^@^@^@^@^@¦Ý£kÅ<89>^E<90>¬KãÀ8ò<8b>^\Ź<9c>@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@i^@^@^@^@^@^@
^@^@^@^@^@^R^@^@^@)^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@F^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@¹^@^@^@^@^@^@^@^
@^@^@^@^R^@^@^@z^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@Þ^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@^A^@^@^@^@^@^@^@^@^
@^@^@^@^@^@1^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@<96>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@T^@^@^@^@^@^@^@^@^@
^@^@^R^@^@^@b^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@Â^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@³^@^@^@^@^@^@^@^@^@^@^
@^R^@^@^@<88>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@¤^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@[^@^@^@^@^@^@^@^@^@^@^
@^R^@^@^@<81>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@«^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@A^@^@^@^@^@^@^@^@^@^@^
@^R^@^@^@<8f>^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@M^@^@^@^@^@^@^@^@^@^@^@^R^@^@^@Ö^@^@^@<80>¦^D^H^D^@^@
^@!^@^Y^@Õ^@^@^@<80>¦^D^H^D^@^@^@!^@^Y^@^Z^@^@^@<9c><91>^D^H^D^@^@^@^Q^@^O^@<9d>^@^@^@`¦^D^H^D^@
^@^@^Q^@^Y^@Ô^@^@^@<80>¦^D^H^D^@^@^@^Q^@^Y^@^@__gmon_start__^@libc.so.6^@_IO_stdin_used^@sprintf
^@__isoc99_sscanf^@time^@getpid^@strdup^@calloc^@strlen^@memset^@__errno_location^@memcmp^@puten
v^@memcpy^@malloc^@getenv^@stderr^@execvp^@fprintf^@atoll^@strerror^@__libc_start_main^@__enviro
[root@bogonshc-3.8.7]# file l.sh.x
l.sh.x:ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked(uses shared libs), for GNU/Linux 2.6.18, stripped
[root@bogonshc-3.8.7]# ./l.sh.x
helloworld
[root@bogonshc-3.8.7]# ls
CHANGES l.sh.x match pru.sh shc-3.8.7.c shc.README test.ksh
Copying l.sh.x.c match.x shc shc.c test.bash
l.sh Makefile match.x.c shc.1 shc.html test.csh
[root@bogonshc-3.8.7]# rm -rf l.sh.x*
[root@bogonshc-3.8.7]# ls
CHANGES l.sh match match.x.c shc shc-3.8.7.c shc.html test.bash test.ksh
Copying Makefile match.x pru.sh shc.1 shc.c shc.README test.csh
#重新加密,并为生成的二进制文件添加有效日期18/10/2006
[root@bogonshc-3.8.7]# ./shc -e 18/10/2006 -m " It’s too late to run this script" -r -v -T -f l.sh
shcshll=bash
shc[-i]=-c
shc[-x]=exec '%s' "$@"
shc[-l]=
shcopts=
shc:cc l.sh.x.c -o l.sh.x
shc:strip l.sh.x
shc:chmod go-r l.sh.x
[root@bogonshc-3.8.7]# ls
CHANGES l.sh.x match pru.sh shc-3.8.7.c shc.README test.ksh
Copying l.sh.x.c match.x shc shc.c test.bash
l.sh Makefile match.x.c shc.1 shc.html test.csh
#执行二进制文件显示过期
[root@bogonshc-3.8.7]# ./l.sh.x
./l.sh.x:has expired!
It’s too late to run this script
#执行l.sh脚本,正确执行,不受过期时间影响
[root@bogonshc-3.8.7]# ./l.sh
-bash:./l.sh: Permission denied
[root@bogonshc-3.8.7]# chmod 755 l.sh
[root@bogonshc-3.8.7]# ./l.sh
helloworld