Articles of Java的

打开一个shell并在java中与其I / O进行交互

我想打开一个shell(xterm)并与之交互(写入命令并读取shell的输出) 这是一个不能工作的代码示例: public static void main(String[] args) throws IOException { Process pr = new ProcessBuilder("xterm").start(); PrintWriter pw = new PrintWriter(pr.getOutputStream()); pw.println("ls"); pw.flush(); InputStreamReader in = new InputStreamReader(pr.getInputStream()); System.out.println(in.read()); } 当我执行这个程序时,打开一个“xterm”窗口并且不input“ls”命令。 只有当我closures窗口,我得到一个“-1”打印,没有任何东西从shell读取 重要- 我知道我可以使用: Process pr = new ProcessBuilder(“ls”)。start(); 要获得输出,但我需要打开其他用途的“xterm” 非常感谢

在点阵式打印机上的Linux的Java打印质量

我需要将报告从Java桌面应用程序打印到点阵打印机(Epson LX-300 II)。 报告由一些graphics组成。 打印机通过USB连接,我正在使用CUPS进行打印。 我使用Printable接口进行打印(在Java中是非常标准的)。 我的问题: 每台打印机的分辨率(60×60,120×60,120×72)都使文本打印质量非常低。 在某些打印机驱动程序中似乎没有任何字体暗示。 信件看起来非常丑陋。 我不能使用直接的文本输出(它看起来不错),因为我也需要在同一页上打印graphics。 似乎问题不在于Java,导致同一应用程序在Windows中打印高质量的文本和graphics。 此外,似乎问题不在CUPS系统中,导致OpenOffice或Abiword以相同的字体打印具有相同字体的相同文本,质量非常好(比在Windows中还差,但仍然不错)。 另外问题不在于字体:我尝试从Windows的Tahoma字体,它也是这样做的:低质量,而在java / linux打印。 在X.Org中,BCI提示并不是问题,屏幕上显示的很好看。 当我将任何文档从OpenOffice导出为PDF并打印PDF时,我得到了相同的效果 – 纸上的丑陋的未暗示的字体。 如果从Office打印相同的文件,一切正常。 我尝试了不同的Linux(KUbuntu 10.04,Puppy 2,Puppy 4.3.1),并且在任何Linux上都有同样的效果。 也许问题出在Ghostscript上,我在Puppy上得到了9.x版本,而且依然如此。 或者我也认为CUPS光栅化器('rastertoepson'或'foomatic-rip')可能存在问题。 这是输出的例子(抱歉的“移动” – 质量的照片): 我只是不知道发生了什么,请帮助我。 – PS我最后的解决scheme是使用“ESCPrinter.java”开放源代码类,并增加了根据Epson文档打印图像的function。

如何停止/解决Java应用程序窃取Linux窗口pipe理器的焦点

我们想要在Java中快速构build小部件。 我们将它们覆盖在用专有第三方graphics软件包编写的显示屏上。 我们发现Java GUI从窗口pipe理器中窃取键盘焦点。 窗口pipe理器是fvwm,我已经尝试过configuration它,所以Java应用程序设置为不让焦点,而且如果它有焦点把它拿走并把它给另一个GUI。 如果我用Java应用程序运行它,它不起作用(只要鼠标在Java GUI上,它有键盘焦点) – 如果我交换一些标准的X GUI小部件(XEyes)来代替Java GUI,它就像一个魅力。 这使得Java不尊重ICCCM的说法(由fvwm的人维护)有所缓解。 我想知道如果其他人已经解决了这个问题,如果是的话如何。 到目前为止,我有几个select如何尝试和解决这个问题: 1)twiddle Java设置,希望如果我关掉焦点,也许它会把焦点控制交给窗口pipe理器(到目前为止,我已经尝试过“setFocusable(false)”在父JFrame上,这是行不通的。线程“ http://java.sun.com/javase/6/webnotes/trouble/TSG-Desktop/html/awt.html#gdaao ”表示我应该改为“Window.setFocusableWindowState(false)”有问题的GUI hasn但是我还没有完全相信Java会重新关注焦点 2)使用JNI在Java程序中进行低级别的X调用。 我认为这可能会工作,但是,我从来没有玩过低水平的X.我不确定我应该使用什么样的调用(XtSetKeyboardFocus()应该是危险的)或者我怎样才能识别我操作的graphics用户界面(在这方面fvwm是很好的,因为他们有一个graphics用户界面,让你点击另一个graphics用户界面,找出它的“名称”和“类”) 3)使用“更强”的窗口pipe理器。 一些不使用ICCCM的窗口pipe理器可能会更好地处理Java。 当然,有很多pipe理者,我不知道该集中注意力。 同样地,很多人似乎都没有明确指出应用程序的重点(大多数人似乎只关心广泛的政策)。

JVM进程如何分配内存?

在理解JVM进程如何分配自己的内存方面,我有一点空隙。 我所知道的 RSS = Heap size + MetaSpace + OffHeap size OffHeap由线程堆栈,直接缓冲区,映射文件(库和jar)和JVM代码本身组成; 目前我正试图分析我的Java应用程序(Spring Boot + Infinispan),RSS是779M (它运行在docker容器中,所以pid 1可以): [ root@daf5a5ae9bb7:/data ]$ ps -o rss,vsz,sz 1 RSS VSZ SZ 798324 6242160 1560540 根据jvisualvm ,承诺的堆大小是374M Metasapce大小是89M 换句话说,我想解释799M – (374M + 89M)= 316M的OffHeap内存。 我的应用程序(平均)有36个活线程 。 每个线程消耗1M: [ root@fac6d0dfbbb4:/data ]$ java -XX:+PrintFlagsFinal -version |grep ThreadStackSize intx CompilerThreadStackSize = 0 […]

在Linux上安装GlassFish的位置?

免责声明:我对Linux比较陌生。 我辩论把它放在SuperUser或ServerFault上,因为答案确实需要将Linux作为一个系统解释(而不是一个特定的编程问题),但是我从Java开发人员的angular度对此感兴趣,我认为这是一个特定的问题,因为我安装GlassFish会极大地影响我的Javaconfiguration,最终影响应用程序configuration。 更不用说在其他网站上发布这个问题可能不会引起任何Java开发人员的注意,更多的可能是系统pipe理员,他们可能不太了解Java,因此完全无视这个决定。 我正在尝试确定GlassFish的安装位置,在我看来,我有(现实的)4个可行的选项: /opt/glassfish/ /usr/local/glassfish/ /home/myUsers/glassfish/ (这是所有OGS文档在其示例中显示的内容) /home/ogs/glassfish (作为自己的用户,类似于Apache Web服务器有时如何设置) 我想知道什么专业人士(考虑到Linux如何处理这些目录的不同性质,FHS等)以及每种方法的缺点。 我读过安装/分区的好处,安装在opt/ 。 不过,我通常会将第三方软件安装到usr/local/ ,所以我有点不确定这是一个策略。 Oracle GlassFish服务器(OGS)文档都显示(但从未彻底推荐)安装在您的主目录( home/myUser/ )下的GlassFish。 然后我再次读到,安装守护进程types的服务是非常普遍的(这是我想象的我将使用GlassFish作为 – 在那里我开始一次,它只是为了例行维护或崩溃)作为他们的自己的用户( home/ogs/glassfish/ )。 我相信这个决定也受到我将如何使用GlassFish的影响,所以让我用一些限制来解释这个问题: 我打算在同一台物理机器上的4个虚拟机上部署4个OGS实例,并将它们集群到同一个域中(4个服务器实例中的1个将成为域的pipe理服务器) 几个应用程序将同时部署到这个集群(所有3个非pipe理节点),并且应该全天候运行,除非它们发生崩溃(希望不经常!),或者当我需要维护或调整它们时 每个应用程序将会非常大,我想用真正的pipe理员来configuration它们,而不是“最小化”的默认设置 如果这些信息没有提供足够的信息来帮助做出这个select,请问,我可以更具体。 我想,当尘埃落定的一天结束的时候,我正在寻找(或多或less)一个与四个目录选项(加上其他明显的我省略)利弊。

Kafka – 无法使用Java将消息发送到远程服务器

我试图创build一个Kafka集群来发送消息到远程控制。 我已经configuration好了这里所描述的一切。 我在Linux red hat机器上运行这个,使用shell可以正常工作。 按照Windows机器上的quick start教程中所述编写java代码后,我收到以下错误: … DEBUG kafka.client.ClientUtils$ – Successfully fetched metadata for 1 topic(s) Set(example) … ERROR kafka.producer.SyncProducer – Producer connection to cldExampleKafka.domain:80 unsuccessful java.nio.channels.UnresolvedAddressException … at kafka.producer.async.ProducerSendThread.run(ProducerSendThread.scala:44) … WARN kafka.producer.async.DefaultEventHandler – Failed to send producer request with correlation id 2 to broker 0 with data for patitions [ati,0] java.nio.channels.UnresolvedAddressException … kafka.common.FailedToSendMessageException: […]

Linux上的JavaFX

Linux上的JavaFX(x86和x64)有什么情况? JavaFX应用程序可以在Linux操作系统上正常运行吗? 我发现了2011年和2012年的一些问题,当时应用程序不稳定!

开源OCR

我正在寻找在Linux上运行的开源OCR库。 我需要这个工作PNG和PDF。 大多数情况下,我想从Java或ruby接口这个库。 任何想法,如果有什么可用的? 问候。

为什么我可以在写入Linux时成功移动一个文件?

我认为这个问题对S / O来说足够技术,而且可能也是针对Android的面向编程的。 我对如何在Android(或Java或Linux,如适用)中处理文件很感兴趣,因为我用我的新智能手机做了一些事情,我很想知道它是如何发生的。 我正在通过蓝牙将笔记本电脑上的文件传输到我的Android手机中。 我看到文件资源pipe理器中的新文件,假设它已完全传输,并将其从/sdcard/bluetooth移到/sdcard/torrents 。 我这样做之后,我注意到其实还在转移。 令我惊讶的是,它成功地完成了,通过手机中的通知图标进行确认,并通过双方的手动MD5检查。 在大多数系统中,文件移动会导致崩溃。 这个成功转移的原因是什么? 我知道,一般来说,文件path与文件系统上的文件位置(在这种情况下是SD卡)是分开的。 我想蓝牙应用程序已打开文件的句柄,当我做文件移动时,一个“打开的文件”表更新了一个新的path。 这个function在任何Linux系统中都是如此吗? 我可以在正在写入的文件上做一个mv ,并期望在新位置的副本是正确的吗?

从C中调用Java的Haskell

这可能听起来像一场噩梦,但我真的想要得到这个工作。 我使用这个例子大部分: 从Haskell调用C,并试图让这个工作在Ubuntu上。 我在java中运行这个: package test; public class JniTest { public native int fib(int x); } 这个在用javah创build.h文件之后在c:(test_JniTest.c) #include "test_JniTest.h" #include "Safe_stub.h" JNIEXPORT jint JNICALL Java_test_JniTest_fib(JNIEnv * e, jobject o, jint f) { return fibonacci_hs(f); } 然后在Haskell中(在存根之前)引用:(Safe.hs) module Safe where import Foreign.C.Types fibonacci :: Int -> Int fibonacci n = fibs !! n where fibs = […]