Articles of Java的

BIRT报告不会在Linux上显示Unicode字符

我在birt-viewer目录下的Redhat Linux生产服务器上部署了BIRT3.7.1报告,问题是不是显示所有unicode字符,失败后左边的报告是空白的。 报告是在Windows XP x64机器上开发的,我已经将所有窗口字体复制到Linux机器上,但仍然是同样的问题。 任何想法如何解决?

来自FileOutputStream.close()的设备不适当的ioctl

我有一些代码,使用FileOutputStream保存一些首选项文件。 这是我写了一千次的标准代码: FileOutputStream out = new FileOutputStream(file); try { BufferedOutputStream bos = new BufferedOutputStream(out); try { store(bos, comments); } finally { bos.close(); } } finally { out.close(); } 我们的一位用户在close()调用期间在Linux上报告了以下错误。 java.io.IOException: Inappropriate ioctl for device at java.io.FileOutputStream.close0(Native Method) at java.io.FileOutputStream.close(FileOutputStream.java:341) at java.io.FilterOutputStream.close(FilterOutputStream.java:160) 有没有人知道这是唯一发生错误地启动JVM的错误-d32或-d64参数(如在这个问题 ),或者有可能还有其他事情?

Linux上的Java窗口半透明animation闪烁

我正在尝试使用半透明的JFrame在Java中进行animation制作。 我在这里修改了Oracle Java教程中的演示代码。 具体是渐变透明窗口演示。 以下代码在Windows XP SP3(最多8个)和Mac OS X Mountain Lion(甚至大多数 Linux)中都能很好地工作。 Linux中的问题,以及我需要帮助的是animation闪烁。 我使用nVidia驱动程序,Metacity和Compiz运行Ubuntu Linux 12.04 LTS 64bit。 PERPIXEL_TRANSLUCENT报告为真,运行良好。 在下面的代码中是否有我缺less的东西,或者有什么需要改变的Linux端? 我在JPanel上尝试了setDoubleBuffered(true),但是并没有消除闪烁。 请将我的代码更改引用到下面的演示: import static java.awt.GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT; import java.awt.Color; import java.awt.Dimension; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.GridBagLayout; import java.awt.Paint; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; […]

从linux内的jvm中查找硬性和软性打开的文件限制(ulimit -n和ulimit -Hn)

我有一个问题,我需要从java / groovy程序中找出linux中进程的软硬件打开文件限制。 当我从terminal执行ulimit时,会为软打开的文件限制提供单独的值。 $ ulimit -n 1024 $ ulimit -Hn 4096 但是,如果我常规执行它,它会忽略软限制并始终返回硬限制值。 groovy> ['bash', '-c', 'ulimit -n'].execute().text Result: 4096 groovy> ['bash', '-c', 'ulimit -Hn'].execute().text Result: 4096 请让我知道,如果我失去了一些东西。 我已经使用Ubuntu 12.04,Groovy版本:1.8.4 JVM:1.6.0_29执行。 更新 :我在Java中尝试了同样的事情。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.StringWriter; import java.io.Writer; public class LinuxInteractor { public static int executeCommand(String […]

自定义JavaFileManager的getJavaFileForOutput(…)方法不被编译器调用

我有一个自定义的JavaFileManager,看起来像这样: public class InMemoryForwardingFileManager extends ForwardingJavaFileManager<StandardJavaFileManager> { private final Map<String, ByteArrayJavaFileObject> javaFileObjects = new HashMap<>(); @Override public JavaFileObject getJavaFileForOutput(Location location, String className, Kind kind, FileObject sibling) throws IOException{ JavaFileObject fileObject = new ByteArrayJavaFileObject( … ); javaFileObjects.put(className, fileObject); return fileObject; } @Override public ClassLoader getClassLoader(Location location){ return new SecureClassLoader(InMemoryForwardingFileManager.class.getClassLoader()){ @Override protected Class<?> findClass(String name) throws ClassNotFoundException […]

Java Process无法通过Runtime.getRunTime()。exec()获取InputStream

try { String str; Process process = Runtime.getRuntime().exec("bash /home/abhishek/workspace/Pro/run"); InputStream isout = process.getInputStream(); InputStreamReader isoutr = new InputStreamReader(isout); BufferedReader brout = new BufferedReader(isoutr); while ((str = brout.readLine()) != null) { System.out.println(str); } } catch (IOException e) { e.printStackTrace(); } 该代码有从进程中获取InputStream的问题,因为如果我从我的terminal运行Shell脚本它运行完全正常,但如果我像这样运行脚本,str始终为空, 我正在使用此代码将Shell脚本的输出直接input到Java中,而不是将脚本输出写入文件中 有没有其他办法可以做到这一点,或者我怎样才能解决问题使用目前的做法

Fedora OpenJDK设置JAVA_HOME

我正在使用Fedora(实际上是Pidora,因为我正试图在Raspberrypi集群上设置hadoop)。 我使用ansible在所有节点上安装了oopenjdk。 但是,当我尝试设置JAVA_HOME环境variables时,我非常困惑地看着/usr/lib/jvm的文件夹: [root@datafireball1 jvm]# ls java-1.7.0-openjdk-1.7.0.60-2.4.7.0.fc20.arm jre jre-1.7.0 jre-1.7.0-openjdk jre-1.7.0-openjdk-1.7.0.60-2.4.7.0.fc20.arm jre-openjdk [root@datafireball1 jvm]# ls -alth total 80K drwxr-xr-x 3 root root 4.0K Jun 7 21:07 . lrwxrwxrwx 1 root root 35 Jun 7 21:07 jre-1.7.0-openjdk -> /etc/alternatives/jre_1.7.0_openjdk lrwxrwxrwx 1 root root 27 Jun 7 21:07 jre-1.7.0 -> /etc/alternatives/jre_1.7.0 lrwxrwxrwx 1 root root 29 Jun […]

JAVA:如何创buildhttp url连接select使用的ip地址

我有我的多个网卡上configuration公共IP地址池。 在我的LINUX机器上运行的JAVA项目中,我需要从池中select一个特定的IP地址,并使用该IP创build一个HttpURLConnecion。 另外,我会在游泳池上循环,每次使用不同的ip。 在目前阶段,我无法使用java.net库find解决scheme。 我宁愿看Apache的HttpClient。 在下面的链接http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html ,据说这样的库可以支持我正在寻找的function。 关于这个的讨论可以在使用Apache HttpClient定义源IP地址中find。 实际上,贴出的post似乎并不确定,因为用户的体验与所描述的库的使用形成了鲜明的对比。 因此,我不认为社区真的成功解决了这个问题。 事实上,在这个问题上可以find几个重复的问题/答案,但似乎没有一个详细分析这个问题。 而且,这个问题并没有面对java.net库的使用(就像我的项目一样)。 目前,我有一个可能的select是调用一些LINUX系统命令(来自java)来切换用于当前连接的NIC。 不过,我还没弄明白。 因此,如果有解决这个问题的积极经验的用户能够给我一个解决scheme/想法/方法,我将不胜感激。 提前致谢, 马塞罗 更新: 我目前已经实现了这个testing代码。 它给了我正确的状态代码(200)。 但是,它需要使用多个IP地址进行testing。 public class test { public static void main(String[] args) { final String authUser = "admin"; final String authPassword = "password"; Authenticator.setDefault( new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication( authUser, authPassword.toCharArray()); […]

如何真正释放Linux中的巨大页面以供新进程使用?

真的找不到这个..希望有人可以帮助。 我正在打造一个100GB的Java堆作为大数据caching。 为了避免与文件系统caching之类的冲突,并且因为它在一般情况下performance更好,我将在大页面中分配它。 我保留了51,200 x 2MB的大页面,一切都很顺利。 然而,当我终止进程然后重新启动时,看起来Linux将这些页面中的一部分留作“rsvd”。 # less /proc/meminfo | grep Hug AnonHugePages: 0 kB HugePages_Total: 52000 HugePages_Free: 50952 HugePages_Rsvd: 1634 HugePages_Surp: 0 Hugepagesize: 2048 kB 据我所知,我没有任何其他系统configuration为请求或保留这些页面。 Linux为我提供了一种方法,让我看看是什么保留了那些保留的和/或使该保留无效的? 从我发现的一切谷歌他们并没有被实际使用,只是Linux保留了他们的储备,但有趣的是不允许我重新启动我的巨大JVM时使用它们。 任何帮助将是伟大的。

Java读生活日志文件

我正在用Java编写一个cod4服务器控制器(我知道那里有完美的服务器控制器,但我想从中学习)。 现在我想根据日志文件中的条目采取具体的操作,这个文件经常被鳕鱼更新,文件会变得很大。 现在我怎样才能有效地读取每一秒左右文件已经改变的部分呢? 或者是否有办法将日志文件中的所有内容都发送给Java?(我读了一些关于pipe道的内容)。 服务器在Linux上运行。 日志文件不需要保存在同一个位置,因为所有的东西都应该通过Java来保存。 大约一秒或2秒的延迟是可以接受的,但不再是。