草庐IT

具有并发输入/输出流的 Java 进程

我正在尝试创建一种控制台/终端,允许用户输入一个字符串,然后将其制作成一个进程并打印出结果。就像普通控制台一样。但是我在管理输入/输出流时遇到了麻烦。我查看了thisthread,但遗憾的是该解决方案不适用于我的问题。除了像“ipconfig”和“cmd.exe”这样的标准命令,如果脚本要求输入,我需要能够运行脚本并使用相同的输入流来传递一些参数。例如,在运行脚本“pythonpyScript.py”后,我应该能够将进一步的输入传递给脚本(例如:raw_input),同时还打印脚本的输出。您期望从终端获得的基本行为。到目前为止我所得到的:importjava.awt.BorderLay

java - "kill -QUIT process_id"是如何工作的?

我只是好奇。kill的手册页说QUIT,又名信号#3,是一个“核心”信号。对于Java进程,它所做的似乎只是转储线程信息。那么,QUIT是否用词不当?仅仅是JVM实现了一个转储线程的singal3处理程序吗? 最佳答案 QUIT可以说是对Java的用词不当。但根据该论点,如果允许应用程序更改信号处理程序的默认行为,任何信号名称都可能是用词不当。实际上,UNIX信号名称与其实际作用之间的对应关系一直有点模糊和脆弱。然而,开发人员已经处理这个“问题”30多年了,但它并不是一个真正的问题。是的,Java线程堆栈转储行为是由JVM实现的。默

java.exe 进程使用了​​更多内存并且没有释放它

我有一个java应用程序,在任何复杂执行之前处于空闲状态时,它在堆中使用23MB,而TaskManager中的java.exe进程大小约为194MB。经过一些复杂的操作,java.exe的大小增长到500MB左右,堆大小也增长了。通过调用System.gc()方法进行几次完整GC后,堆大小减少回23MB。但是java.exe的大小从大约600MB减少到大约237MB,其中仍然有大约43MB的数据。有没有办法减少这个?还是因为某些行为? 最佳答案 这很正常,不用担心。JVM在需要执行一些复杂的逻辑时会获取内存。当java完成任务处理后

java - 如何执行 Bash 命令并收集 Java 的输出?

如何执行Bash命令并收集Java的输出?大家好,基本上我正在编写一个基本的控制台应用程序,并希望能够从中运行命令,例如sudo***、halt、ifconfig等。有什么见解吗? 最佳答案 您可以使用processBuilder用于此目的的API。参见thisexample. 关于java-如何执行Bash命令并收集Java的输出?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions

java - 上传文件时报错 "Unable to process parts as no multi-part configuration has been provided"

这个问题在这里已经有了答案:HowcanIuploadfilestoaserverusingJSP/Servlet?(14个答案)关闭6年前。我正在尝试通过JSP文件中的表单上传文件,但出现此错误。servlet已经具有@MultipartConfig符号。我正在使用servlet3.0和apachetomcat8。错误信息:java.lang.IllegalStateException:Unabletoprocesspartsasnomulti-partconfigurationhasbeenprovided在线Collectionparts=request.getParts();`

java - 为什么要启动 conhost.exe?

我正在从.Net启动一个Java进程(“java.exe”)。使用Process.Start().除了Java进程之外,另一个名为conhost.exe的进程以某种方式启动。我正在将输出从Java进程重定向到.Net进程。为什么还要启动conhost.exe?如何从.Net跟踪它?我想跟踪这个特定实例,因为我不是直接创建它(而是Java.exe进程),所以我没有它的PID。 最佳答案 在早期版本的Windows中,控制台窗口托管在CSRSS中,这是一个高度特权、受信任的系统关键进程。在Win7上,控制台窗口现在似乎托管在权限较少的c

Java:如何执行未附加到 Windows 控制台的进程?

Runtime.exec()和ProcessBuilder似乎都将控制台附加到启动的进程。在Windows7上,您可以在任务管理器中看到conhost.exe弹出。我现在的问题是,我尝试启动的C进程执行以下测试以确定它是否具有可以向其发出提示的控制台窗口:HANDLEcons=CreateFile("CONOUT$",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);if(cons!=INVALID_HANDLE_VALUE){//Promptuser;thismakesmyapp

Java:以管理员身份在新的 cmd.exe 中执行命令

我想使用Java应用程序执行命令Runtime.getRuntime.exec(command);但该命令需要管理员权限。如果我使用runas/user:Administrator"cmdNameparameters"没有任何反应,因为我需要将用户和密码作为命令的参数。但是我需要对cmd运行命令,以便新的cmd.exe以管理员身份启动并询问我是否要以管理员身份运行cmd.exe。同意后,该命令应在admin-cmd中运行。所以像这样:Stringcommand="popupNewCmdAsAdminAndRun"batWhichNeedsAdmin.bat""Runtime.getRu

java - 发生 org.hibernate.exception.GenericJDBCException : Could not open connection for long running process

在我的应用程序中,我为一项工作使用了20个线程。每个线程调用远程Web服务并更新Oracle数据库。Jboss重启后,作业无法更新数据库,除了我在日志中发现的异常:2017-11-0823:36:20,706ERROR[org.hibernate.engine.jdbc.spi.SqlExceptionHelper](EJBdefault-21)javax.resource.ResourceException:IJ000460:Errorcheckingforatransaction2017-11-0823:36:20,706ERROR[org.jboss.as.ejb3](EJBde

java - 跨 Java 进程共享对象

我正在从主应用程序执行另一个JVM(java.exe)。有什么方法可以与新创建的进程(在创建时或创建后)共享一个对象(相当大的对象)。someObjectsO=newsomeObject();//sOispopulated//CreatingnewprocessRuntimert=Runtime.getRuntime();Processproc=rt.exec("java-cp"+tempDir+jarsInPath+""+appMain);现在我希望sO对象可用于proc对象表示的进程ProcessBuilder是否为此目的提供任何实用程序? 最佳答案