Tag: shell

在Java程序中设置shell脚本/访问中的环境变量

我想在Ubuntu 10.04中使用shell脚本设置环境,并希望在java程序中访问。 我写了这样的shell脚本: #! /bin/sh export JAVA=/home/ubuntu echo “Variable $JAVA” 我的java程序是: import java.util.Map; public class SystemEnv { public static void main(String[] args) { Map variables = System.getenv(); for (Map.Entry entry : variables.entrySet()) { String name = entry.getKey(); String value = entry.getValue(); System.out.println(name + “=” + value); } System.out.println(System.getenv((“JAVA”))); } } 当我在没有shell脚本的情况下执行此命令时,它运行良好,但在shell脚本中却没有。

如何在运行时在WAR中找到非Java资源?

我需要在运行时从我在Tomcat上运行的WAR运行shell脚本。 因此,我将我的脚本theScript.sh放在我的src / main / resources目录中(因为,是的,我使用Maven)。 这个目录在classpath中,我已经检查过了。 在代码中,我想将我的脚本复制到临时目录中。 所以我试图通过我的ClassLoader获取它: URL myURL = ClassLoader.getSystemResource(“theScript.sh”); if (myURL == null) { LOG.error(“Couldn’t find the resource”); } 你猜怎么着? 是的,“无法找到资源”一直出现在我的日志中。 知道我在这里做错了吗? 我的环境是传统的Eclipse / Tomcat。

使用SSH exec通道调用shell脚本,但忽略对其他shell脚本的调用

我正在使用这里提供的有用示例,使用JSch exec在远程服务器上执行shell脚本。 我可以看到从脚本返回的回声和最后的退出状态是0 – 所以乍一看看起来都很好。 但是,问题是脚本本身会调用其他脚本,这些脚本似乎完全被忽略,只是跳过了。 该脚本直接调用其他脚本。 即脚本的第一行是这样的: script_two.sh 任何人都可以建议任何方法来克服这个问题吗? 我确实开始研究“shell”频道而不是“exec”,但在我的情况下这可能很棘手,因为在让用户访问系统之前,服务器会提供一个表格来填写(姓名,号码,为什么是你登录等等) – 我还没有能够以编程方式填写并提交此表格,所以如果可能的话我想坚持使用exec。 我是这一切的新手,所以任何帮助/建议都会受到欢迎! 下面的代码片段。 正如我所说的,这似乎有效,但是由脚本“scriptFileName”表示的sh脚本调用其他sh脚本,并且这些脚本不会被执行。 非常感谢任何帮助,J JSch jsch = new JSch(); JSch.setConfig(FileTransferConstants.STRICT_HOST_KEY_CHECKING, “no”); Session session = jsch.getSession(username, hostIPAddress, port); session.setPassword(password); session.connect(); //create the execution channel over the session ChannelExec channelExec = (ChannelExec)session.openChannel(“exec”); channelExec.setCommand(scriptFileName); channelExec.connect();

与java持久的本地tty会话

我正在开发一个Web shell客户端,标签function“代码完成”,并有一个问题。 任何人都知道打开本地tty持久连接的方法,我可以用一个会话执行多个命令,我不喜欢执行所有时间Runtime.getRuntime()。exec(“command”); 有什么建议吗? 问候

如何使用grep匹配空格或换行符

我想用一个单词grep一个文件,说“AAA”,它以空格或换行结束。 我知道如何单独写这个,如下所示,但在组合它们时遇到问题(从输出VVV AAA和AAA VVV的意义上说)。 $echo -e “AAA VVV \nVVV AAA\nBBB” | grep “AAA$” >VVV AAA $echo -e “AAA VVV \nVVV AAA\nBBB” | grep “AAA[[:space:]]” >AAA VVV 我尝试过使用[] ,但没有成功..

Gradle:使用项目类路径执行Groovy交互式shell

我有一个由几个子项目组成的Gradle项目。 我刚刚创建了一个新的,以添加对我想要运行的交互式Groovy shell的支持: gradle console 要么 gradle console:run 所以我的新console模块的build.gradle文件如下: apply plugin: ‘groovy’ apply plugin:’application’ mainClassName = ‘org.codehaus.groovy.tools.shell.Main’ dependencies { compile ‘org.codehaus.groovy:groovy-all:2.2.2’ compile ‘org.fusesource.jansi:jansi:1.11’ compile ‘commons-cli:commons-cli:1.2’ compile ‘jline:jline:2.11’ compile project(‘:my-module’) } task(console, dependsOn: ‘classes’, type: JavaExec) { main = ‘org.codehaus.groovy.tools.shell.Main’ classpath = sourceSets.main.runtimeClasspath } 但是,当我运行gradle :console:run或gradle console我得到类似的东西: :console:run Groovy Shell (2.2.2, JVM: 1.6.0_45) Type ‘help’ or […]

java / shellscript代码,用于查明jar文件是否已在当前计算机上运行

如何确定我的计算机上是否正在运行特定的JAR文件? 我只是想确保一个特定的JAR只在任何时间执行一次 – 所以如果执行同一个jar的另一个请求进来,那么我不应该再次调用那个jar。 我可以使用上面的代码作为java代码(我将添加到该JAR本身)或shellcript(我将用于调用jar文件)。 该机器将是Linux机器 – CentOS,Debian或Ubuntu或Amazon Linux。

java Runtime.exec运行shell脚本

我正在使用Runtime.getRuntime()。exec()从java代码运行shell脚本。 当我将参数作为字符串传递时,代码工作正常 Runtime.getRuntime().exec(“sh test.sh”) 因为我必须传递带空格的路径的附加参数,所以我用String数组替换了String。 String[] cmd = {“sh test.sh”, “/Path/to my/resource file”}; Runtime.getRuntime().exec(cmd) 我也尝试过 String[] cmd = {“sh test.sh”}; Runtime.getRuntime().exec(cmd) 但他们都没有奏效。 它抛出exception java.io.IOException: Cannot run program “sh test.sh”: java.io.IOException: error=2, No such file or directory 为什么在作为String工作时传递相同的脚本文件,并且当与String数组一起使用时抛出exception。 有没有人遇到过这个问题。 请帮助我使用字符串数组作为Runtime.exec()的arugument。 提前致谢。

运行一个java程序

我想使用shell脚本运行java程序。 java程序在p2目录下,其名称为maxconnect4,我已编译它,类名为maxconnect4。 我写这样的shell命令: java p2 / maxconnect4 arg1 arg2 arg3 此shell命令不起作用。 它给出了一个错误:线程“main”中的exceptionjava.lang.NoClassDefFoundError:p2 / maxconnect 但是,我用这种方式编译java程序: javac p2 / * .java,它的工作原理。

如何创建AppleScript或Command文件以在Mac OS上启动Java应用程序?

我创建了一个Java应用程序,需要准备它在任何操作系统上运行。 对于Windows,我创建了一个类似于launch-win32.bat的批处理文件: @echo off javaw -Xss1024k -Xmn256m -Xms512m -Xmx1024m -cp lib/*;bin/myjar-latest.jar my.package.MyMainClass 对于linux,我创建了一个类似于launch-linux.sh的shell脚本: #!/bin/sh java -Xss1024k -Xmn256m -Xms512m -Xmx1024m -cp lib/*:bin/myjar-latest.jar my.package.MyMainClass 现在我认为MacOS与linux非常相似,因为它们都是基于unix的,我问一个带mac的朋友尝试运行shellscript来启动我的应用程序。 但它失败了以下NoClassDefFoundError : Exception in thread “main” java.lang.NoClassDefFoundError: my/package/MyMainClass Caused by: java.lang.ClassNotFoundException: my.package.MyMainClass at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 看起来java命令的语法不正确,因为类路径未正确添加到java程序中。 我现在的主要问题如下: Sun / Oracle没有正式支持MacOS,这就是为什么很难找到一些好的文档。 (我需要最新的JRE 7)。 […]