首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java学习笔记 调用外部程序

Java中可以调用外部程序,这需要通过Process等类来实现。 创建进程 先来介绍一下Process的创建,我们需要使用ProcessBuilder类。如果需要命令行参数的话,则传入多个参数。...因此,为了安全的等待进程结束,我们需要调用waitFor()方法,阻塞当前线程,直到进程退出为止。 所以最后的代码类似这样。在进程启动之后,我们需要阻塞,直到它结束。然后获取返回值和输出结果。...Bit Server VM (build 25.121-b13, mixed mode) 其他例子 通过一番研究,我们得到了Java调用外部进程的模板例子。...记事本 调用notepad就可以启动记事本了。由于我们调用了process.waitFor(),所以当记事本窗口关闭前,Java程序也不会关闭。...所以代码要修改一下,我们调用的进程实际上是cmd,参数是ver。 另外默认编码是UTF-8,而在中文操作系统下编码是GBK。所以会出现乱码。

1.7K70

Java魔法堂:调用外部程序

前言 Java虽然五脏俱全但总有软肋,譬如获取CPU等硬件信息,当然我们可以通过JNI调用C/C++来获取,但对于对C/C++和Windows API不熟的码农是一系列复杂的学习和踩坑过程。...认识java.lang.Runtime#exec方法 作用:用于调用外部程序,并重定向外部程序的标准输入、标准输出和标准错误到缓冲池。功能就是和windows的“运行”一样。 ?...Process proc = r.exec("echo.exec", null, new File("D:\\tools")); String command 即为需要调用外部程序,以及命令行参数等。...输入重定向 废话少说,直接看代码!...即通过Runtime#exec调用外部程序时,外部程序的标准输出流和标准错误流已经被Java程序接管。那么在命令中企图通过>和>>实现输出重定向显然已无效果。 ?

1.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

Java跨语言调用,使用JNA访问Java外部接口

JNA简单介绍 先说JNI(Java Native Interface)吧,有过不同语言间通信经历的一般都知道,它允许Java代码和其他语言(尤其C/C++)写的代码进行交互,只要遵守调用约定即可。...然后再在Java中载入这个库dll/so,最后编写Java  native函数作为链接库中函数的代理。经过这些繁琐的步骤才能在Java调用 本地代码。...可以看到步骤减少了很多,最重要的是我们不需要重写我们的动态链接库文件,而是有直接调用的API,大大简化了我们的工作量。 JNA只需要我们写Java代码而不用写JNI或本地代码。...很简单,不需要写一行C代码,就可以直接在Java调用外部动态链接库中的函数! 下面来解释下这个程序。...使用JNI技术,不仅可以实现Java访问C函数,也可以实现C语言调用Java代码。 而JNA只能实现Java访问C函数,作为一个Java框架,自然不能实现C语言调用Java代码

4K21

java调用ruby代码

客户端需要调用服务器端传回的脚本信息,然后执行。其中脚本类型包括ruby。...而java调用ruby的代码大致如下: 1 String jrubyCode="puts 'hello world'"; 2 ScriptEngineManager manager = new ScriptEngineManager...原因: 目前jdk里面内嵌的好像只有支持最基本的js调用的引擎,对于其他的脚本语言调用,需要用到对应的脚本引擎jar包。 解决办法: 百度了很多都无果,最终google出了解决办法。 1....安装或者解压对应的jruby到特定的目录,并且模仿java_home设置jruby_home和path。 3. 引入解压或者安装之后程序lib目录下的jruby,jar包到工程中。...可以看到其构造方法调用了initRubyInstanceConfig方法,该方法根据JRUBY_HOME对应的路径去找对应的jruby实例。这就完美的说明了前面三个步骤的原因。

2.2K110

JNI:本地代码调用Java代码

本地代码访问Java代码 在被调用的C/C++函数中也可以反过来访问Java程序中的方法 javah 工具生成的C/C++函数声明中,可以看到有两个参数: JNIEXPORT void JNICALL...JNIEnv 类型 JNIENV类型实际上代表了Java环境,通过这个JNIEnv*指针,就可以对Java端的代码进行操作。...例如,创建Java类的对象、调用Java对象的方法、获取Java对象的属性等。JNIEnv的指针会被JNI传入到本地方法的实现函数中来对Java端的代码进行操作。...访问Java类中的属性与方法 在C/C++本地代码中访问Java端的代码,一个常见的场景就是获取类的属性和调用类的方法。...Java属性的jfieldID;然后才能在本地代码中进行Java的属性操作。

1.6K20

JNI:Java代码调用本地代码

JNI概述 JNI 是 Java Native Interface 的简称 Java是跨平台的编程语言,但是在有些时候仍然是有需要调用本地代码(这些代码通常是由 C 与 C++ 编写的)。...JNI 是 Java 平台的一个功能强大的接口。这个 JNI接口提供了Java与操作系统本地代码相互调用的功能。 2....C/C++代码的步骤 在 Java 类中声明一个native方法 public native void sayHello(); 使用 javah 命令生成包含 native 方法声明的C/C++头文件...使用JNI弊端 使用了 JNI,那么这个Java Application 将不能跨平台了。如果需要移植到别的平台上,那么需要重新编写native代码 Java 是强类型的语言,而 C/C++并不是。...因此,在编写JNI时要更小心 总之,必须在构建Java程序的时候,尽量少用本地代码 Visual studio环境配置://www.cnblogs.com/sysu-huangwei/p/7466481

1.4K30

JAVA代码审计 -- XXE外部实体注入

防御XXE 方案一、使用开发语言提供的禁用外部实体的方法 PHP: libxml_disable_entity_loader(true); JAVA:看下面的代码审计 Python: 第三方模块lxml..._bylfsj的博客-CSDN博客_xxe JAVA代码审计部分 XXE为XML External Entity Injection的英文缩写,当开发人员允许xml解析外部实体时,攻击者可构造恶意外部实体来达到任意文件读取...因为使用了同一个接口,所以这两种方式的调用方法是完全一致的。同样的,在使用默认解析方法并且未对XML进行过滤时,其也会出现XXE漏洞。...参考文章&代码: JoyChou93/java-sec-code: Java web common vulnerabilities and security code which is base on...springboot and spring security (github.com) 《网络安全java代码审计》 Java XXE测试用例详解 (qq.com) XXE漏洞原理以及防御方式 - Ruilin

2.7K10

Python调用外部系统命令

利用Python调用外部系统命令的方法可以提高编码效率。调用外部系统命令完成后可以通过获取命令执行返回结果码、命令执行的输出结果进行进一步的处理。...本文分析python调用外部系统命令主要从两个方面考虑:1、是不是可以返回命令执行结果码,因为大部分场景都需要通过判断调用命令是执行成功还是失败。2、是不是可以获取命令执行结果。...call()调用外部系统命令执行,并返回程序执行结果码。...调用外部系统命令,返回命令结果码,但是无法获取命令执行输出结果,输出结果直接打印到屏幕终端。...调用外部系统命令,返回命令执行输出结果,但不返回结果吗import os#学习中遇到问题没人解答?

22120

记录——JAVA动态加载外部JAR,并调用方法以及卸载关闭打开的外部JAR

正文 最近在工作当中需要通过JAVA代码调用外部JAR里面的方法,而不是直接在项目当中直接引入对应的JAR。记录一下实现过程当中遇到的问题和具体实现的代码。...具体代码实现 第一步:创建一个测试类,然后把这个类打包成一个普通的jar包。...注意事项 外部jar的路径需要用file开头 loadClass是输入类所在的package路径 如果不调用urlClassLoader.close()这个方法关闭外部jar的话,外部jar会一直呈现占用状态...上述方法是不能调用外部jar里面的mian方法的,代码调用外部jar里面的main方法可以通过RunTime类执行 java -jar xxx.jar命令进行调用。...---- 标题:记录——JAVA动态加载外部JAR,并调用方法以及卸载关闭打开的外部JAR 作者:海加尔金鹰 地址:https://www.hjljy.cn/articles/2019/10/16

9.5K20
领券