LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1981|回复: 2

从jedit中发现的shell脚本,查找java虚拟机,并执行jar文件,很有启发意义

[复制链接]
发表于 2009-9-3 11:58:26 | 显示全部楼层 |阅读模式
  1. #!/bin/sh
  2. #
  3. # Runs jEdit - Programmer's Text Editor.
  4. #
  5. # Set jvm heap initial and maximum sizes (in megabytes).
  6. JAVA_HEAP_INIT_SIZE=64
  7. JAVA_HEAP_MAX_SIZE=256
  8. # Find a java installation.
  9. if [ -z "$JAVA_HOME" ]; then
  10.         echo "Warning: \$JAVA_HOME environment variable not set! Consider setting it."
  11.         echo "          Attempting to locate java..."
  12.         j=`which java 2>/dev/null`
  13.         if [ -z "$j" ]; then
  14.                 echo "Failed to locate the java virtual machine! Bailing..."
  15.                 exit 1
  16.         else
  17.                 echo "Found a virtual machine at: $j..."
  18.                 JAVA="$j"
  19.         fi
  20. else
  21.         JAVA="$JAVA_HOME/bin/java"
  22. fi
  23. # Launch application.
  24. exec $JAVA -Xms${JAVA_HEAP_INIT_SIZE}M -Xmx${JAVA_HEAP_MAX_SIZE}M -jar /usr/share/jedit/jedit.jar -reuseview "$@" &
复制代码
发表于 2009-9-5 22:09:54 | 显示全部楼层
这个是假设 which java 只找到一条结果,
如果有多个结果,应该脚本会出现问题。
比如一般系统安装java的通过 alternatives 添加所用的java 至/usr/bin/java
如果我自定义一个 /opt/bin/java。
可能搜索到不同的结果。
查找java环境,应该可以看看 NetBeans 安装程序(我说是安装版本),安装时要求指定java运行环境,它会搜索到系统中所有的java环境让你选择。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-7 09:10:10 | 显示全部楼层
如果在shell下export $PATH,会打印出执行目录列表,我的列表是:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
那么脚本程序寻找java的方法也是按照次序寻找,找到即停,当然如果/opt/bin排在第一个就会先选择了,此脚本潜在的问题,主要还是没有对java的版本进行验证,如果使用高版本虚拟机开发,再找到低版本虚拟机执行,会产生错误!hantsy兄指出的还是很有道理的,也许简单就会带来考虑不够全面吧!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表