在JAVA与JSP中要调用一个LINUX上的脚本程序,或WINDOWS上的脚本程序,该怎么写

在JAVA与JSP中要调用一个LINUX上的脚本程序,或WINDOWS上的脚本程序,该怎么写,第1张

String cmd = "/APP/iconDetectLogsh";

Process ps = RuntimegetRuntime()exec(new String[] {"/bin/sh","-c",cmd});

pswaitFor();

BufferedReader in = new BufferedReader(new InputStreamReader(psgetInputStream()));

String currentLine = "";

while((currentLine = inreadLine()) != null) {

Systemoutprintln(currentLine )

}

我不明白为什么楼主要把duanyt目录下每个jar文件都给CLASSPATH,直接把duanyt目录赋给CLASSPATH不就行了,例如

jar=$APP_HOME/duanyt

CLASSPATH="$CLASSPATH":"$jar"

export CLASSPATH=:$CLASSPATH

这样应该就可以了吧,那个for循环可以去掉了。另外,for循环里的变量确实是用错了,应该把$CLASS换成$jar,但我觉得在这里这样做没必要。

我们要在Java中执行JavaScriptMethodsjs中的execute(s1,s2)方法,JavaScriptMethodsjs文件内容如下:

function execute(s1, s2){

return s1 + s2;

}

首先需要定义一个接口,这个接口中给出与要执行的JavaScript方法一样的方法签名,我们定义接口Methods,它的内容如下:

/

接口中的方法签名必须与要执行的JavaScript方法一致

@author yuncong

/

public interface Methods {

public String execute(String s1,String s2);

}

然后,就可以用脚本引擎执行JavaScriptMethodsjs中execute(s1,s2)方法了,具体内容写在下面的ExecuteScript类中的:

import javaioFileReader;

import javaxscriptInvocable;

import javaxscriptScriptEngine;

import javaxscriptScriptEngineManager;

public class ExecuteScript {

public static void main(String[] args) {

ScriptEngineManager manager = new ScriptEngineManager();

ScriptEngine engine = managergetEngineByName("js");

try {

String path = ExecuteScriptclassgetResource("")getPath();

Systemoutprintln(path);

// FileReader的参数为所要执行的js文件的路径

engineeval(new FileReader(path + "JavaScriptMethodsjs"));

if (engine instanceof Invocable) {

Invocable invocable = (Invocable) engine;

Methods executeMethod = invocablegetInterface(Methodsclass);

Systemoutprintln(executeMethodexecute("li", "yuncong"));

}

} catch (Exception e) {

eprintStackTrace();

}

}

}

运行ExecuteScript类,输出如下:

1

2

/C:/Users/yuncong/git/login/target/classes/executescript/

liyuncong

macbook pro可以装C++ JAVA JAVA eclipse这些编程软件的。

这是可以的,c++的软件在mac中可以下xwxxxcode-style,里面都是英文,但是 *** 作还是挺容易的。在MAC上可以装MAC版本的eclipse和JDK,所以使用macbook pro 可以开发java。苹果官方的xwxxxcode-style可以开发ios。还有MAC版的netbeans可以开发php、java、c++等语言。

扩展资料:

新款的MacBook Pro

为游戏的运行提供了动力强劲的高速图形处理支持。即使是对图形运算有着极高要求的应用程序

如Aperture、Final Cut Pro

、或是 Motion 等,MacBook Pro 一样应付自如。

使用新的 Intel Iris Pro Graphics集成图形处理器

,享受理想的图性性能和长达8个小时的电池使用时间。或转换到 NVIDIA GeForce GT 750M独立图形处理器获得最快速、最顺畅、最清晰的图形效果。

在 MacBook Pro 坚实的铝合金机身上,键盘部位以精密工艺切割成形,与各个按键完全密合;而按键的曲面经过精心设计,完全配合指尖触感。键盘具有背光照明功能,即使在光线不足的场所如飞机上或会议厅使用时,仍然可以看清键盘。

java程序是提供了这个一方法, Process pro = RuntimegetRuntime()exec(cmds);

但是一般来说,尽量去用一些其他脚本(lua,shell,python)去执行一系列linux命令比较灵活, 而且耗费资源少。但是RuntimegetRuntime()exec()这种调用方式在java虚拟机中是十分消耗资源的,即使命令可以很快的执行完毕,频繁的调用时创建进程消耗十分可观。

java虚拟机执行这个命令的过程是,首先克隆一条和当前虚拟机拥有一样环境变量的进程,再用这个新的进程执行外部命令,最后退出这个进程。频繁的创建对CPU和内存的消耗很大。

下面是一个调用linux命令的例子:

public class Test {  

    public static void main(String[] args) throws Exception{  

        String[] cmds = {"/bin/sh","-c","ps -ef|grep java"};  

        Process pro = RuntimegetRuntime()exec(cmds);  

        prowaitFor();  //阻塞,直到上述命令执行完

        InputStream in = progetInputStream();  

        BufferedReader read = new BufferedReader(new InputStreamReader(in));  

        String line = null;  

        while((line = readreadLine())!=null){  

            Systemoutprintln(line);  

        }  

    }  

}

注:参数中“/bin/sh“ “-c“ 是可以用shell执行指定的命令的意思

这里/bin/sh -c ps -ef|grep java,会执行ps linux命令

public class TriangleTest {

public static void main(String[] args){

printTriangle(7);

printTriangle2(7);

}

public static void printTriangle2(int lineCount){

int line = (lineCount-1)2;

line = line % 2 == 0 line+1 : line;

//正三角

for(int i=0;i<line/2+1;i++){

int starCount = 2i+1;

int leftSpaceCount = (line - starCount) /2;

int rightSpaceCount = leftSpaceCount;

for(int m=0;m<leftSpaceCount;m++){

Systemoutprint('x');

}

for(int n=0;n<starCount;n++){

Systemoutprint('b');

}

for(int m=0;m<rightSpaceCount;m++){

Systemoutprint(' ');

}

//换行

Systemoutprintln();

}

}

public static void printTriangle(int lineCount){

int line = lineCount;//可改

line = line % 2 == 0 line+1 : line; //行数若为偶数则加1行 变成基数行,偶数行打印不了

//正三角

for(int i=0;i<line/2+1;i++){

int starCount = 2i+1;

int leftSpaceCount = (line - starCount) /2;

int rightSpaceCount = leftSpaceCount;

for(int m=0;m<leftSpaceCount;m++){

Systemoutprint(' ');

}

for(int n=0;n<starCount;n++){

Systemoutprint('');

}

for(int m=0;m<rightSpaceCount;m++){

Systemoutprint(' ');

}

//换行

Systemoutprintln();

}

//倒三角

for(int i=0;i<line/2;i++){

int starCount = line-2(i+1);

int leftSpaceCount = (line - starCount) /2;

int rightSpaceCount = leftSpaceCount;

for(int m=0;m<leftSpaceCount;m++){

Systemoutprint(' ');

}

for(int n=0;n<starCount;n++){

Systemoutprint('');

}

for(int m=0;m<rightSpaceCount;m++){

Systemoutprint(' ');

}

//换行

Systemoutprintln();

}

}

}

// 用法:RuntimegetRuntime()exec("命令");

String shpath="/test/testsh"; //程序路径

Process process =null;

String command1 = “chmod 777 ” + shpath;

try {

RuntimegetRuntime()exec(command1 )waitFor();

} catch (IOException e1) {

e1printStackTrace();

}catch (InterruptedException e) {

eprintStackTrace();

}

String var="201102"; /参数

String command2 = “/bin/sh ” + shpath + ” ” + var;

RuntimegetRuntime()exec(command2)waitFor();

以上就是关于在JAVA与JSP中要调用一个LINUX上的脚本程序,或WINDOWS上的脚本程序,该怎么写全部的内容,包括:在JAVA与JSP中要调用一个LINUX上的脚本程序,或WINDOWS上的脚本程序,该怎么写、在linux下对写好的java程序编写shell脚本要怎么写 我写的代码如下,有错误、java程序中运行js脚本等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/10627587.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存