Articles of Java的

如何在Linux上使用GDBdebuggingJava -JNI?

任何人都可以指导如何使用GDBdebugging器在Linux上debuggingJNI代码(如果可能的话,请build议其他选项)。 -My JNI project when running on Linux is leading to a JVM crash. -The CPP code has been compiled into .so files. -I run the project like this : *java xyz.jar -commandline_args_to_project*. 我已经安装了Gdb,但没有得到我们如何使用它来debugging项目。 我也一定需要用-g选项编译.cpp文件tdebugging.so文件?

如何从java程序在terminal运行命令?

我需要从一个JAVA程序在Fedora 16的terminal运行一个命令。 我试过使用 Runtime.getRuntime().exec("xterm"); 但是这只是打开terminal,我无法执行任何命令。 我也试过这个: OutputStream out = null; Process proc = new ProcessBuilder("xterm").start(); out = proc.getOutputStream(); out.write("any command".getBytes()); out.flush(); 但我仍然只能打开terminal,但不能运行命令。 任何想法如何做到这一点?

线程“main”中的exceptionjava.lang.NoClassDefFoundError:HelloWorld

我一直在这个工作了大约一个小时,通过Q&A在stackoverflow翻阅,但我还没有find一个build议的解决scheme,我的问题。 对不起,如果这是重复的,但我找不到任何重复的问题,解决了我的具体问题的答案。 我正在尝试从terminal首次编写和编译一个Java程序(直到现在,我一直在使用Eclipse for Java和VIM来处理其他任何事情,但是我觉得是完全切换到VIM的时候了)。 这是我目前的HelloWorld代码: package main; public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!"); } } 我编译并运行使用以下命令(指定类path,以确保不是问题): javac -cp "./" HelloWorld.java java -cp "./" HelloWorld 这给我以下错误信息: Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: main/HelloWorld) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:791) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at […]

亚马逊Ec2的FTP写权限

我能够使用filezilla成功连接到amazon ec2实例。 我使用的用户名是ec2-user。 所以当我尝试将我的应用程序战争转移到tomcat它说 /var/lib/tomcat6/webapps/RealEstateERP.war: open for write: permission denied Error: File transfer failed. 我试图改变权限使用filezilla,但不允许这样做。 我知道没有写权限,但我该如何改变它。 我马新到Linux。 请帮帮我。

使用VisualVM通过防火墙连接到远程jstatd实例

可能重复: VisualVM over ssh 我正在写这个问题并回答这个问题,因为我花了几个小时才把这个工作交给我,而我在这里find的答案却没有为我工作。 希望这对其他人有帮助。 如果你有另一个解决scheme,而不是我最终使用的解决scheme,请随时回答这个问题。 如果你的更好,我会接受你的。 问题:我试图用VisualVM和jstatd监视FreeBSD服务器上的一些自制Java应用程序(这也适用于Linux服务器),但是我无法让VisualVM列出服务器上的进程,即使在我转发我的防火墙中分配的和随机的jstatd端口,并可以看到使用sockstat进行的连接。

IOException:打开的文件过多

我试图在Linux上运行Jetty 7.0.1的Java webapp中debugging文件描述符泄漏。 由于打开的文件太多 ,请求开始失败,并且Jetty必须重新启动,该应用程序已经运行了一个月左右。 java.io.IOException: Cannot run program [external program]: java.io.IOException: error=24, Too many open files at java.lang.ProcessBuilder.start(ProcessBuilder.java:459) at java.lang.Runtime.exec(Runtime.java:593) at org.apache.commons.exec.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58) at org.apache.commons.exec.DefaultExecutor.launch(DefaultExecutor.java:246) 起初我以为这个问题是用启动外部程序的代码,但是它使用的是commons-exec ,我看不出有什么问题: CommandLine command = new CommandLine("/path/to/command") .addArgument("…"); ByteArrayOutputStream errorBuffer = new ByteArrayOutputStream(); Executor executor = new DefaultExecutor(); executor.setWatchdog(new ExecuteWatchdog(PROCESS_TIMEOUT)); executor.setStreamHandler(new PumpStreamHandler(null, errorBuffer)); try { executor.execute(command); } catch (ExecuteException executeException) […]

Java I / O与使用Linux NPTL的Java新I / O(NIO)

我的web服务器使用通常的Java I / O和每个连接机制的线程。 现在,他们正在增加用户(长轮询连接)的膝盖。 但是,连接大多是空闲的。 虽然这可以通过添加更多的Web服务器来解决,但是我一直在努力对NIO实现进行一些研究。 我对此有了一个混合的印象。 我已经阅读了基准testing,其中Linux中的新NPTL库的常规I / O性能优于NIO。 用Java I / Oconfiguration和使用最新的NPTL for Linux的真实生活经验是什么? 有没有增加的performance? 而在一个更大的范围问题上: 在一个标准的服务器级机器(带有四核处理器的戴尔)中,我们希望正常运行(使用Linux NPTL库?)的I / O和阻塞线程(我们在Tomcat线程池中configuration的)的最大数量是多less? 如果线程池变得非常大,说1000多个线程会有什么影响? 任何引用和指针将非常感激。

Java – IO绑定线程 – 1:1线程模型

在下面的程序中, //Producer – IO bound public class FileCrawler implements Runnable{ private final BlockingQueue<File> fileQueue; private final File root; …. public void run(){ try{ crawl(root); // IO bound }catch(InterruptedException e){ Thread.currentThread().interrupt(); } } private void crawl(File root) throws InterruptedException{ File[] entries = root.listFiles(fileFilter); … for(File entry: entries){ fileQueue.put(entry); } } } //Consumer – CPU bound public […]

为Java / Linux创build文件

我运行一次后,我有以下的生成文件,一旦我做了一些更改的生成文件,现在当我运行它,我得到一个“做:没有什么可做的默认”。 我怎样才能强迫它重build? 我执行“make”并且“make clean”,当我input“make”的时候,我仍然得到错误信息。 另外,如何获取src目录中的log4.properties文件复制到目标目录(在make文件和命令行中:javac -classpath src:lib / log4j-1.2.16.jar src / *。java -d bin)? # #定义编译器和编译器标志variables # JFLAGS = -g -cp。:src:lib / log4j-1.2.16.jar JC = javac # #清除.java文件中的任何构build.class文件的默认目标; 我们 #将提供我们自己的目标条目在这个makefile中做这件事。 #make有一套不同后缀的默认目标(如.co) #目前,清除.java.class的默认值是没有必要的,因为 #make没有这个目标的定义,但后来的版本 #make may,所以确保我们清除任何默认值并没有什么坏处 #这些定义 # .SUFFIXES:.java .class # #这是我们从.java文件创build.class文件的目标条目 #这是使用后缀规则语法的目标条目: #DSTS: # 规则 #'TS'是目标文件的后缀,'DS'是依赖项的后缀 #文件和“规则”是build立一个目标的规则 #'$ *'是一个内置的macros,它获取当前目标的基本名称 #请记住,在命令行('规则')之前必须有一个 # .java.class: $(JC)$(JFLAGS)$ *。java # […]

从string获得命令(密码),并将其设置为InputStream到Java(JSCH)中的Unix服务器

几乎类似于这个话题,但在这里我不是一个超级用户使用–stdin。 所以我find了另外一个方法,我会在后台打开一个“shell”,并通过InputStream通过一个String给shell提供input 我做了如下代码: String s = "cd bin\n"; byte bb[] = s.getBytes(); InputStream intt = new ByteArrayInputStream(bb); channel.setInputStream(new FilterInputStream(intt) { public int read(byte[] b, int off, int len) throws IOException { return in.read(b, off, (len > 1024 ? 1024 : len)); } }); 现在,当我只想执行一个命令,但是我想给出多个命令时,这是完美的。 有什么build议么? 问候, 依禅