
正文
java代码中调用 Java代码中调用Linux命令压缩多个文件
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java中调用是什么意思
通过实例化的方式调用。
1、定义2个类
2、类A和类B相互调用
相关问答
Q1: java程序里如何调用linux命令?
Java可以通过Runtime调用Linux命令java代码中调用,形式如下java代码中调用:
Runtime.getRuntime().exec(command)
但是这样执行时没有任何输出java代码中调用,因为调用Runtime.exec方法将产生一个本地的进程java代码中调用,并返回一个Process子类的实例(注意:Runtime.getRuntime().exec(command)返回的是一个Process类的实例)该实例可用于控制进程或取得进程的相关信息。
由于调用Runtime.exec方法所创建的子进程没有自己的终端或控制台,因此该子进程的标准IO(如stdin,stdou,stderr)都通过Process.getOutputStream(),Process.getInputStream(),Process.getErrorStream()方法重定向给它的父进程java代码中调用了。
用户需要用这些stream来向子进程输入数据或获取子进程的输出,下面的代码可以取到linux命令的执行结果:
try{
String[]cmd=newString[]{”/bin/sh”,“-c”,”ls“};
Processps=Runtime.getRuntime().exec(cmd);
BufferedReaderbr=newBufferedReader(newInputStreamReader(ps.getInputStream()));
StringBuffersb=newStringBuffer();
Stringline;
while((line=br.readLine())!=null){
sb.append(line).append(”\n”);
}
Stringresult=sb.toString();
System.out.println(result);
}catch(Exceptione){
e.printStackTrace();
}
Q2: JAVA如何调用C函数
要在java中调用c语言java代码中调用的库,需要使用Java提供java代码中调用了JNI。\x0d\x0a举例说明\x0d\x0a在c语言中定义一个voidsayHello()函数(打印HelloWorld);然后在Java中调用这个函数显示HelloWord.\x0d\x0a现在分别从Java和C语言两部分说明:\x0d\x0a1.Java部分\x0d\x0a首先定义一个HelloNative,在其中申明sayHello函数,函数要申明为Native类型的.如下:\x0d\x0apublicclassHelloNative{\x0d\x0apublicnativevoidsayHello();\x0d\x0a}\x0d\x0a\x0d\x0a编译这个类,生成class文件:\x0d\x0ajavacHelloWorld.java\x0d\x0a\x0d\x0a利用javah生成需要的h文件\x0d\x0ajavahHelloNative\x0d\x0a\x0d\x0a生成的h文件大概如下:\x0d\x0a\x0d\x0a/*DONOTEDITTHISFILE-itismachinegenerated*/\x0d\x0a#include\x0d\x0a/*HeaderforclassHelloNative*/\x0d\x0a\x0d\x0a#ifndef_Included_HelloNative\x0d\x0a#define_Included_HelloNative\x0d\x0a#ifdef__cplusplus\x0d\x0aextern"C"{\x0d\x0a#endif\x0d\x0a/*\x0d\x0a*Class:HelloNative\x0d\x0a*Method:sayHello\x0d\x0a*Signature:()V\x0d\x0a*/\x0d\x0aJNIEXPORTvoidJNICALLJava_HelloNative_sayHello\x0d\x0a(JNIEnv*,jobject);\x0d\x0a\x0d\x0a#ifdef__cplusplus\x0d\x0a}\x0d\x0a#endif\x0d\x0a#endif\x0d\x0a\x0d\x0a可以看一下上面自动生成的程序,程序includejava代码中调用了jni.h,这个头文件在$JAVA_HOME下的include文件夹下.还可以发现生成的函数名是在之前的函数名前面加上了Java_HelloNative。\x0d\x0a2.C语言部分\x0d\x0a根据上面生成的h文件编写相应的代码实现,建立一个HelloNative.cpp用来实现显示HelloWorld的函数.如下:\x0d\x0a\x0d\x0a#include\x0d\x0a#include"HelloNative.h"\x0d\x0a\x0d\x0aJNIEXPORTvoidJNICALLJava_HelloNative_sayHello(JNIEnv*,jobject)\x0d\x0a{\x0d\x0aprintf("HelloWorld!\n");\x0d\x0a}\x0d\x0a\x0d\x0a代码编写完成之后,我们再用gcc编译成库文件,命令如下;\x0d\x0agcc-fPIC-I/usr/lib/jvm/java-7-openjdk-i386/include-I/usr/lib/jvm/java-7-openjdk-i386/include/linux-shared-olibHelloNative.soHelloNative.cpp\x0d\x0a\x0d\x0a这样就会在当前目录下生成一个libHelloNative.so的库文件.这时需要的库已经生成,在C语言下的工作已经完成了.\x0d\x0a接下来需要在Java中编写一个程序测试一下.在程序前,需要将我们的库载入进去.载入的方法是调用Java的System.loadLibrary("HelloNative");\x0d\x0a\x0d\x0apublicclassTestNative\x0d\x0a{\x0d\x0astatic{\x0d\x0atry{\x0d\x0aSystem.loadLibrary("HelloNative");\x0d\x0a}\x0d\x0acatch(UnsatisfiedLinkErrore){\x0d\x0aSystem.out.println("Cannotloadhellolibrary:\n"+e.toString());\x0d\x0a}\x0d\x0a}\x0d\x0apublicstaticvoidmain(String[]args){\x0d\x0aHelloNativetest=newHelloNative();\x0d\x0atest.sayHello();\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a但是再编译后,运行的时候,问题又出现了.\x0d\x0aCannotloadhellolibrary:\x0d\x0ajava.lang.UnsatisfiedLinkError:noHelloNativeinjava.library.path\x0d\x0aExceptioninthread"main"java.lang.UnsatisfiedLinkError:HelloNative.sayHello()V\x0d\x0aatHelloNative.sayHello(NativeMethod)\x0d\x0aatTestNative.main(TestNative.java:13)\x0d\x0a\x0d\x0a载入库失败,但是库明明就是放在当前文件夹下的,怎么会载入失败呢?\x0d\x0a用System.getProperty("java.library.path")查看,发现java.library.path中并不u存在当前的目录.主要有以下的几个解决办法:\x0d\x0a1)将生成的库复制到java.library.path有的路径中去,当然这样不是很好\x0d\x0a2)设置环境变量exportLD_LIBRARY_PATH=.:$LD_LIBRARY_PATH,将当前的目录加入到LD_LIBRARY_PATH中\x0d\x0a3)设置java的选项,将当前的目录加入到其中.java-Djava.library.path=.$LD_LIBRARY_PATH\x0d\x0a这样之后程序就能够成功的运行了.可以看见显示的"HelloWorld!"了
Q3: java中方法之间是如何调用的?
要调用方法void showInfo()就直接在调用的地方直接写showInfo();\x0d\x0a要调用方法 boolean showInfo()就在调用的地方比如写boolean ect=showInfo();\x0d\x0a要调用方法void showInfo(String message)就在调用的地方比如写showInfo("java functions");\x0d\x0a有参数的括号里面传参数,无参方法的括号不能省.\x0d\x0a有返回值的前面要加一个变量接受返回值。\x0d\x0a\x0d\x0a方法之间是如何调用的?\x0d\x0a比如在程序a行遇到调用方法showInfo()\x0d\x0a程序在运行的时候会找到被调用的showInfo()方法所在的区域,如果showInfo方法是有参数的,则把参数传过去(传地址或者传值),然后就初始化showInfo方法开始执行,当showInfo方法执行遇到return语句或者执行代码结束,如果有return语句则返回一个showInfo方法的声明类型的值到程序行的接受参数变量;此时会返回到程序的a行执行。
Q4: java在控制台输入的代码可以调用吗
可以调用
1.2构造Scanner类的对象,附属于标准输⼊流System.in,之后通过其中的⽅法获得输⼊。
1.3使⽤close();⽅法关闭对象。
这是Java经典的取输入方式,在JDK1.0中引入。此方法通过将 System.in(标准输入流)包装在 InputStreamReader 中来使用,InputStreamReader 包装在 BufferedReader 中,我们可以在命令行中读取用户的输入
常⽤的⽅法:nextLine();(字符串),nextInt();(整型数),nextDouble();(双精度型数);nextFloat()转换成浮点型;nextBoolean()转换成布尔型。
Q5: java中如何调用类?
一、本类中的直接方法名调用,不管是public还是private或protected。
二、其他类中的如果是public的话,直接其他类的对象调用即可。
三、如果是static的话直接其他类名加方法名调用。
Java:
是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
关于java代码中调用和Java代码中调用Linux命令压缩多个文件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







