Articles of Java的

在Linux中,如何使用外部jar文件执行Java jar文件?

在Linux中,如何使用外部jar文件执行Java jar文件?

找不到适合jdbc的驱动程序:postgresql://192.168.1.8:5432 / NexentaSearch

我写了下面的Java程序 import java.io.*; import java.util.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.*; public class Sample { public static void main (String[] args) throws IOException { int CountComputers; FileInputStream fstream = new FileInputStream( "/export/hadoop-1.0.1/bin/countcomputers.txt"); BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); String result=br.readLine(); CountComputers=Integer.parseInt(result); input.close(); fstream.close(); Connection con = null; […]

连接到从Linux访问数据库

我已经创build了我的应用程序,并在windows下进行了testing,这些窗口从访问数据库文件写入/读取数据。 但在现实世界中,它将运行在Linux环境中,而现在我有一个大问题,看起来没有Linux的驱动程序来访问ms acess db,下面是我现在如何build立连接: private static Connection getConnection() { if (connection == null) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String conStr = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + configuration.getAccessDbFile(); connection = DriverManager.getConnection(conStr); } catch (Exception e) { e.printStackTrace(); } } return connection; } 有没有人遇到类似这样的事情,有没有人有一个build议,我该怎么办? 这是我在linux上得到的exception: java.lang.NullPointerException at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436) at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:207)

强制JVM执行所有没有页面caching的IO(例如O_DIRECT)

我正在做一些用Java编写的应用程序的基准testing。 实验结果不受页面caching影响是非常重要的(我使用的是linux) 因此,每当文件打开时,避免页面caching的最好方法是使用O_DIRECT。 因此,我更改了jre的源代码中的相应代码。 我的方法完全适用于通过FileOutputStream (例如写入)的所有内容,但对于FileInputStream (例如读取)不起作用。 在将O_DIRECT添加到FileInputStream的打开调用中时,JVM无法加载任何类: Error: Could not find or load main class perf.TestDirectIO 这个错误不是类path问题,因为我可以通过使用“unhacked”JVM来修复它。 所以打开文件似乎有一个问题。 我很高兴有关如何解决这个问题的任何build议。 如果有人想要做类似的事情,我已经logging在我的博客整个黑客 。 作为参考,这些是我所做的JVM代码的更改: jdk/src/share/native/java/io/FileInputStream.c : @@ -58,7 +60,8 @@ JNIEXPORT void JNICALL Java_java_io_FileInputStream_open(JNIEnv *env, jobject this, jstring path) { – fileOpen(env, this, path, fis_fd, O_RDONLY); + fileOpen(env, this, path, fis_fd, O_RDONLY | O_DIRECT); // this […]

如何查看/更改Linux上的套接字连接超时?

在Java中创buildSocket时: new Socket(host, port); Socket构造函数会在返回之前尝试连接到host:port 。 在Windows上,对于无法访问的主机,这几乎立即失败,但是对于Linux来说,Socket可能需要5分钟才能超时。 我知道,如果我有创build套接字的控制权,我可以这样做: Socket s = new Socket(); s.bind(..); s.connect(.., timeout); 但我宁愿让操作系统使用合理的默认值。 有没有办法在Linux上改变这个设置? 谢谢

Java运行时不支持编码“UTF-8”

每当我在SUN Java(构build1.6.0_10-rc2-b32和其他1.6.x版本)下启动基于Apache Felix(OSGi)的应用程序时,我在控制台(通常在Ubuntu 8.4下)看到以下消息输出: 警告:Java运行时不支持编码“UTF-8”。 我在运行Tomcat和Resin的时候偶尔会看到这个消息。 如果java支持unicode和UTF-8,那么这个消息是什么原因呢? 我还没有find任何参考,或在任何其他地方的答案。

线程“main”中的exceptionjava.lang.NoClassDefFoundError:org / apache / hadoop / util / PlatformName

我知道这个例外有很多post,但我无法解决这个问题。 类path必须被编辑,我认为要解决它。 我试图在hadoop基础结构中运行一个名为DistMap的程序。 这是我得到的错误。 Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.PlatformName at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) Could not find the main class: org.apache.hadoop.util.PlatformName. Program will exit. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FsShell Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.fs.FsShell at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) Could […]

Commons VFS和Java.net.URL – 增加对“sftp://”协议的支持

我们正在尝试使用Apache Commons VFS通过SFTP访问某些内容。 它声称支持SFTP ,但是,当它启动时,我们会得到一个MalformedURLException 。 挖掘我看到,Apache vfs使用java.net.URL 。 但是文档告诉我,它实际上并不支持sftp:// URL。 以下协议的协议处理程序保证存在于searchpath中: http, https, ftp, file, and jar 用于附加协议的协议处理程序也可用。 我在Linux上使用java 1.6.0。 如何防止java.net.URL在看到sftp:// URL时抛出一个不稳定的东西? 我需要继续使用Apache commons VFS库,它使用java.net.URL 。

@Override编译错误,实现一个接口(eclipse jdk1.6.0_23 linux)

在使用@Override注解实现接口的类时,我在eclipse中得到了编译错误。 编译器合规性级别设置为Java 6.0。 我正在使用6.0 jdk的最新版本。 错误:“{classname}types的方法{methodname}必须覆盖超类方法” 相同的代码适用于configuration类似的mac。 public interface ChannelIF { … public boolean canSendNarrowcast(); public boolean canSendBroadcast(); } public class FacebookChannel implements ChannelIF { … @Override public boolean canSendNarrowcast() { return true; } @Override public boolean canSendBroadcast() { return true; } }

看到太多的lsof不能识别协议

我有一个Java进程/应用程序。 当我在该java进程上运行/ usr / sbin / lsof -p时,看到很多“无法识别协议”。 另外,有趣的是,文件描述符(FD)以非常稳定的速度增长。 而那些正在创build的FD则被描述为“无法识别协议”。 那么,有没有什么方法来testing/分析java进程,以确定谁创build了这么多的FD。 任何工具的任何详细的解释将真的很有帮助。 快速谷歌search告诉我strace是一种方式,但是IIUC,这将显示出来的Java进程的Linux系统调用。 我更感兴趣的是我的java代码的哪一部分performance得比正在生成的系统调用差。 再一次,任何想法/build议将会非常棒!