Articles of Java的

无法在Visual VM中查看Visual GC

我在我的本地Windows机器上使用Java VisualVM来监视我的远程服务器(Linux)。 除了“ Visual GC ”之外,我能够获得Bisual VM的所有统计数据。 它显示“不支持此JVM”。 我GOOGLE了它,发现这可能是因为jstatd没有运行和连接。 所以执行“ jstatd -J-Djava.security.policy = / tmp / tools.policy ”。 它显示一个ip“ 175.41.139.225 ”。 我不明白为什么它试图连接到这个IP。 这不是我的远程机器,也不是我的本地机器的ip。 [root@shipping_pt mail]# jstatd -J-Djava.security.policy=/tmp/tools.policy Could not contact registry Connection refused to host: 175.41.139.225; nested exception is: java.net.ConnectException: Connection refused java.rmi.ConnectException: Connection refused to host: 175.41.139.225; nested exception is: java.net.ConnectException: Connection refused at […]

Java的'tnameserv'需要3分钟以上才能“准备就绪”,为什么呢?

我试图帮助一个应用程序的开发,我想在Linux上使用Corba服务器来解决问题。 我把这个问题缩小了3分钟,以便在调用之后做好准备。 tnameserv在3分钟内试图做什么,无论如何我可以加快速度? 应用程序失败,因为它试图在重试之间进行5次连接尝试,间隔1秒; 这显然没有给tserverserv足够的时间做好准备。 我在Slackware 13.0上使用Java 6u17 如果重要的话。 tnameserv的实际调用如下: tnameserv -ORBInitialPort 23423 在shell中运行该命令时,它似乎挂起,直到3分钟左右,我终于看到它显示“就绪”。 UPDATE 我做了一个strace -f tnameserv -ORBInitialPort 23423 ,我看到了gettimeofday(),clock_gettime()和futex()的调用,后者总是返回'-1 ETIMEDOUT(Connection timed out)。 我有一种感觉,这是与我的问题有关,但我不知道如何或为什么。 这只是我从strace中看到的一小部分。 有人可以复制和/或理解这个吗? [pid 30950] futex(0x8128e14,FUTEX_WAIT_PRIVATE,1,{0,49903084})= -1 ETIMEDOUT(连接超时) [pid 30950] futex(0x8098a28,FUTEX_WAKE_PRIVATE,1)= 0 [pid 30950] clock_gettime(CLOCK_MONOTONIC,{329619,995857482})= 0 [pid 30950] gettimeofday({1260930158,92108},NULL)= 0 [pid 30950] clock_gettime(CLOCK_MONOTONIC,{329619,995996617})= 0 [pid 30950] clock_gettime(CLOCK_MONOTONIC,{329619,996088536})= 0 [pid 30950] gettimeofday({1260930158,92328},NULL)= […]

Eclipse将堆释放回系统

我在Linux(64位)上使用最新的Sun Java 6的Eclipse 3.6,其中包含大量大型项目。 在一些特殊情况下(例如SVN更新),Eclipse需要高达1 GB的堆。 但大部分时间只需要350 MB。 当我启用堆状态面板时,我大部分时间都看到: 350万878M 我用这些设置启动Eclipse:-Xms128m -Xmx1024m 所以大部分的时间都是白白浪费的,只是在短时间内存使用量达到峰值时才使用。 我不喜欢这一点,我希望Eclipse释放内存回到系统,所以我可以用它来做其他程序。 当Eclipse需要更多的内存,而没有足够的可用RAM时,Linux可以将其他正在运行的程序换掉,我可以忍受。 我听说有一个-XX:MaxHeapFreeRatio选项。 但我从来没有想出我有什么价值,所以它的工作原理。 没有任何价值,我尝试曾经有所作为。 那么我怎么能告诉Eclipse(或Java)释放未使用的堆?

在Ubuntu上通过PulseAudio从Java播放audio文件时出错

shell上的消息是: Exception in thread "main" java.lang.IllegalArgumentException: Invalid format at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142) at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99) at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283) at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402) at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:453) at reprod.ReproducirFichero(reprod.java:16) at reprod.main(reprod.java:44) 我尝试下载新的audio驱动程序,我尝试重新安装openJDK 7和openJRE 7,也尝试安装java 7。 我已经certificate我的代码在另一台电脑,它的工作原理,我使用的台式机主板是英特尔d525mw,我试图播放的audio格式是.wav。我使用的Linux版本是Ubuntu 12.04.3。请帮我。谢谢 这里是我的代码派对,我尝试播放.wavaudio格式 import javax.sound.sampled.*; public class reprod { public static void play(){ try { Clip cl = AudioSystem.getClip(); File f = new File("/home/usr/Desktop/d.wav"); AudioInputStream ais = AudioSystem.getAudioInputStream(f); cl.open(ais); […]

Linux x86_64上的Cassandra启动错误1.2.6

试图从最新的稳定版本在Linux上安装cassandra – http://cassandra.apache.org/download/ – 1.2.6 我已经修改了cassndra.yaml指向一个自定义目录而不是/ var,因为我没有/ var的写权限 我在启动时看到这个错误。 由于发布版似乎相对较新,因此无法在Google上find任何答案。 只是在这里张贴,以防万一我的一个愚蠢的错误。 相同的分配文件在我的macos x86_64机器上正常工作。 INFO 19:24:35,513 Not using multi-threaded compaction java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.xerial.snappy.SnappyLoader.loadNativeLibrary(SnappyLoader.java:322) at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:229) at org.xerial.snappy.Snappy.<clinit>(Snappy.java:48) at org.apache.cassandra.io.compress.SnappyCompressor.create(SnappyCompressor.java:45) at org.apache.cassandra.io.compress.SnappyCompressor.isAvailable(SnappyCompressor.java:55) at org.apache.cassandra.io.compress.SnappyCompressor.<clinit>(SnappyCompressor.java:37) at org.apache.cassandra.config.CFMetaData.<clinit>(CFMetaData.java:82) at org.apache.cassandra.config.KSMetaData.systemKeyspace(KSMetaData.java:81) at org.apache.cassandra.config.DatabaseDescriptor.loadYaml(DatabaseDescriptor.java:468) at org.apache.cassandra.config.DatabaseDescriptor.<clinit>(DatabaseDescriptor.java:123) at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:211) at […]

获取组合键

如何获得键盘上的按键组合( Ctrl + somekey , Alt + somekey )与Java? 我使用KeyEvent监听器, MouseEvent监听MouseEvent监听键盘上的所有按键。 我可以通过使用该侦听器捕获键盘上的所有关键事件。 但是,我不能抓住( Ctrl + Alt + Del )等键组合。

在Java中获得硬链接计数

我需要从java中的solaris10操作系统中的文件中获取硬链接计数。 parsingls -l不是一个选项。 我尝试使用java的http://bmsi.com/java/posix/index.html的 posix,但无法设法得到它的工作。 有没有其他轻量级的API或代码来获取此信息?

从Java程序打开浏览器窗口

题 我有一个用Java编写的应用程序。 它被devise为独立运行在一个Linux机器上。 我正试图产生一个新的Firefox窗口。 但是, Firefox永远不会打开。 它总是有一个shell退出代码1.我可以用gnome-terminal运行这个相同的代码,并打开罚款。 背景 所以,这里是它的初始化过程: 启动X“Xorg:1 -br -terminate -dpms -quiet vt7” 启动窗口pipe理器“metacity –display =:1 – replace” configuration资源“xrdb -merge / etc / X11 / Xresources” 成为守护进程,并从控制terminal断开 一旦程序运行,用户可以点击一个button,产生一个Firefox窗口。 这是我的代码来做到这一点。 记住X正在显示中:1。 码 public boolean openBrowser() { try { Process oProc = Runtime.getRuntime().exec( "/usr/bin/firefox –display=:1" ); int bExit = oProc.waitFor(); // This is always 1 […]

Java exec()不会返回pipe道连接命令的预期结果

我正在调用通过pipe道连接的命令行程序。 所有这些都可以在Linux上运行。 我的方法: protected String execCommand(String command) throws IOException { String line = null; if (command.length() > 0) { Process child = Runtime.getRuntime().exec(command); InputStream lsOut = child.getInputStream(); InputStreamReader r = new InputStreamReader(lsOut); BufferedReader in = new BufferedReader(r); String readline = null; while ((readline = in.readLine()) != null) { line = line + readline; } } […]

如何使用java.nio.Files创build软符号链接

我使用这样的命令在Windows上创build符号链接: cmd /c mklink /J "${linkName.canonicalPath}" "${targetFolder.canonicalPath}" 从Groovy和使用Runtime.getRuntime()。exec()方法 它工作正常,但我想要使用java.nio.Files.createSymbolicLink()方法。 但我总是得到相同的错误信息: java.nio.file.FileSystemException: A required privilege is not held by the client. mklink / J命令适用于当前用户,我想避免提升权限