Articles of Java的

Java执行bash脚本,错误= 26文本文件忙

我有一个编写Linux bash脚本的java代码,然后做一个chmod来添加执行权限,然后尝试执行它。 我得到一个IOException在进程开始时说错误= 26,文本文件繁忙。 我已validation文件已完成写入和stream已closures。 chmod工作正常,但我不断收到这个错误。 我注意到,如果我运行一个debugging器,并通过代码,它没有得到错误,所以很明显,有一个时间问题。 在我尝试执行bash脚本之前,如何确保chmod已经完成? 我想避免非可靠的解决scheme,如添加Thread.sleep(10000),以及“hacky”的东西,如将try / catch块中的执行放入循环中,直到成功。 我有相当数量的代码包装进程的启动与侦听线程等,但这里是它正在做的简化版本(也试过这个代码,它有相同的结果): String[] cmd1 = {"/bin/chmod", "750", postFile }; new ProcessBuilder(cmd1).redirectErrorStream(true).start().waitFor(); String[] cmd2 = { postFile }; new ProcessBuilder(cmd2).redirectErrorStream(true).start().waitFor(); 每次执行后,“postFile”都有正确的750个权限,但是没有执行(由于IOException)。

在没有root权限的情况下在Linux上获得硬盘序列号

标题基本概括了所有内容。 对于我的Java程序,我想在Linux中获得硬盘序列号。 最初我打算使用命令行“hdparm -i / dev / sda”,但后来我意识到这需要root权限,这是我不希望我的程序必须要求的,所以现在我正在寻找替代。 理想情况下,我宁愿不使用JNI,但是我不认为这很重要,如果应用程序已经为我写了,并获得了BSD之类的许可… 虽然我在这里,我也将欣赏Mac的解决scheme – 再次,不需要根/pipe理员权限! 提前致谢

CertificateException:不存在主题替代名称

在调用https webservice时出现以下exception。 com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present. 我正在从Java代码中调用一个php webservice。 CN(通用名称),即证书上的IP地址和我所调用的IP地址是不同的。 我已经在java的密钥库中添加了证书。 有人能帮我解释为什么会发生这种情况吗? 我哪里去错了? CN是服务器IP地址。 我打电话给那个服务器使用它的外部IP地址也给我们,因为防火墙的问题。

是什么导致计算机将文件识别为某种文件types? 以及如何改变它(与Java)?

我正在创build一个java程序,它读取一个文件的inputstream,通过根据密码更改字节数来encryption它,并创build一个新的encryption文件。 例如: 我创build了一个包含以下文字的testing文件: This is a test to see if the encrypter project works. 当我读取java中的字节时,我得到: [84, 104, 105, 115, 32, 105, 115, 32, 97, 32, 116, 101, 115, 116, 32, 116, 111, 32, 115, 101, 101, 32, 105, 102, 32, 116, 104, 101, 32, 101, 110, 99, 114, 121, 112, 116, 101, 114, 32, 112, […]

Java Linux非阻塞套接字超时行为

我有一个Java非阻塞服务器,跟踪select器中的所有套接字通道。 然后我build立500个连接到服务器并定期发送数据。 服务器收到的每一条数据都被回送给客户端。 问题来了,testing工作奇妙的几个小时,然后突然逐渐所有的服务器pipe理的套接字抛出一个连接超时IOException当试图读取数据。 我研究了客户端线程是否被扼杀(而不是发送数据),但是我正在屈服于遍历所有套接字并写出数据的客户端线程。 交通似乎不断stream动,但过了一段时间,就全部消失了。 任何想法可能导致这种行为? 我正在使用Java 6的最新版本在Linux平台上运行。我的应用程序启动了两个线程,一个用于服务器,另一个用于所有客户端。 提前致谢! 额外:问题是处理Linux而不是我的代码。 当我在Windows上运行完全相同的设置(在相同的硬件上),它永远不会超时,但几个小时后,它们开始在Linux上发生。 它必须是Linux中的某种TCP设置才会导致它发生。 感谢您的build议。

Linux上的Java套接字错误(0xFF发送,-3收到)

在Java中使用WebSocket服务器时,遇到了这个奇怪的错误。 我把它缩小为两个小的java文件,一个是服务器,另一个是客户端。 客户端只需发送0x00 ,stringHello和0xFF (根据WebSocket规范)。 在我的Windows机器上,服务器打印下列内容: Listening byte: 0 72 101 108 108 111 recieved: 'Hello' 而在我的unix框相同的代码打印以下内容: Listening byte: 0 72 101 108 108 111 -3 而不是接收0xFF它得到-3,从来没有打破循环,从不打印它收到。 代码的重要部分如下所示: byte b = (byte)in.read(); System.out.println("byte: "+b); StringBuilder input = new StringBuilder(); b = (byte)in.read(); while((b & 0xFF) != 0xFF){ input.append((char)b); System.out.print(b+" "); b = (byte)in.read(); } inputLine […]

在CentOS中禁用UseGCOverheadLimit

我需要在我的CentOS服务器中禁用GC开销限制。 这样做的原因是暂时阻止java.lang.OutOfMemoryError: GC overhead limit exceededexception。 但是我在Linux + Java系统上是零,并且不知道如何运行这个命令行: -XX:-UseGCOverheadLimit

从java中查找linux发行版的名字

我们正在用java编写一个小型库,需要从底层系统收集信息。 我们能够从java的系统属性中读取大部分内容,但是我们似乎无法find在Linux上运行时提取发行版名称的正确方法。 电话 System.getProperty("os.name"); 返回“Linux”(我们也收集),但我们正在寻找一种方法来获得例如“Ubuntu”。 我们在java中需要这个解决scheme,并且不想做一些/ etc / releaseparsing

Jconsole无法连接

所有, 我正在使用VNC连接到服务器。 我能够将VNC导入服务器,并打开Jconsole,但无法连接到我的进程,无论是否包含PID或尝试使用GUI进行连接。 奇怪的是GUI中显示的所有进程。 见下文。 我尝试连接时遇到这个问题: 其次是 有什么我需要做的,以便让jconsole本地在Linux服务器上通过vnc工作? 谢谢

Tesseract错误。 非法的最小或最大规格

试图从这里运行示例代码http://tess4j.sourceforge.net/codesample.html我有一个错误说 Error: Illegal min or max specification! signal_termination_handler:Error:Signal_termination_handler called:Code 5002 我find了解决scheme,例如https://code.google.com/p/tesseract-ocr/issues/detail?id=228 ppl说设置区域设置足以摆脱错误。 我的问题是,我用Java编写而不是C ++,而且我无法find任何地方如何在代码中设置区域设置,就像他们那样做的那样 #include <locale.h> setlocale (LC_NUMERIC, "C"); 我试图使用setTessVariable(String, String)方法,但它没有工作。 我会提到,我的PDF文件,这是input,是在波兰语言,所以如果有人知道我应该如何设置这些地区,我将不胜感激。 我尝试在Linux x64平台上运行它。