我正在使用与SQLServer JDBC驱动程序捆绑在一起的示例应用程序。我正在运行Ubuntu 14.10。我在命令行上编译应用程序:
javac -cp .:/path/to/sqljdbc42.jar connectURL.java
并运行它:
java connectURL
这让我很熟悉ClassNotFoundException
:
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:191)
at connectURL.main(connectURL.java:42)
我还没有修改示例类文件,但是为了完整起见,这里将其包括在内:
import java.sql.*;
public class connectURL {
public static void main(String[] args) {
// Create a variable for the connection string.
String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;integratedSecurity=true;";
// Declare the JDBC objects.
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
// Establish the connection.
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(connectionUrl);
// Create and execute an SQL statement that returns some data.
String SQL = "SELECT TOP 10 * FROM Person.Contact";
stmt = con.createStatement();
rs = stmt.executeQuery(SQL);
// Iterate through the data in the result set and display it.
while (rs.next()) {
System.out.println(rs.getString(4) + " " + rs.getString(6));
}
}
// Handle any errors that may have occurred.
catch (Exception e) {
e.printStackTrace();
}
finally {
if (rs != null) try { rs.close(); } catch(Exception e) {}
if (stmt != null) try { stmt.close(); } catch(Exception e) {}
if (con != null) try { con.close(); } catch(Exception e) {}
}
}
}
SQL JDBC .jar的路径绝对正确。如果我将其添加import com.microsoft.sqlserver.jdbc.SQLServerDriver;
到类文件中,则在编译时不会有任何抱怨,但ClassNotFoundException
在运行时仍然会收到抱怨。
我在其他地方读过,较新版本的JDBC不需要您通过来加载驱动程序Class.forName
,但是如果我删除那行,那么可以预料到java.sql.SQLException: No suitable driver found
。
我究竟做错了什么?我确定正在加载.jar并找到了该类,因为如果尝试,例如import com.microsoft.sqlserver.jdbc.SomeNonExistentClass;
:
connectURL.java:2: error: cannot find symbol
我的Java详细信息:
$ java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu0.14.10.2)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
你在那儿 编译时,您将JDBC JAR包含在类路径中,但是在执行时,还需要将其包含在类路径中:
java -cp。:/ path / to / sqljdbc42.jar connectURL
我正在尝试将mopub添加到我的应用程序中。我通过AndroidStudio插件安装了sdk。并将其添加到我的xml中 在com.example.hroshandel.myapplication.simpleintro_fragmentactivity.oncreate(Simpleintro_fragmentactivity.java:20) 由:java.lang.ClassNotFoundE
我正在完成这个关于SpringBean范围的教程。我手工设置所有东西,然后用maven打包。这是我的项目结构: 你好orld.java: 主应用。爪哇: 豆。xml: 波姆。xml: 然后我像这样运行罐子: 获取以下日志: 你能告诉我,我做错了什么吗?
问题内容: 下面的代码使用Guice 2.0产生错误。使用Guice 1.0,一切都很好。JDK是Java 6更新15。 错误是: 可能是什么问题? 问题答案: 您错过了在类路径中将依赖项jar包含在类中的情况。
我正在使用Hadoop mapreduce编写代码来获取不同长度的子字符串。示例给出了字符串“ZYXCBA”和长度3。我的代码必须返回所有可能的字符串,长度为3(“ZYX”、“YXC”、“XCB”、“CBA”),长度为4(“ZYXC”、“YXCB”、“XCBA”),最后返回长度为5(“ZYXCB”、“YXCBA”)。 在map阶段,我做了以下工作: key=我想要的子字符串的长度 value=“Z
问题内容: 我使用Java开发Web应用程序。当我将其部署到我的应用程序服务器(Jetty,Tomcat,JBoss,GlassFish等)时,将引发错误。我可以在stacktrace中看到此错误消息: 要么 这是什么意思,我该如何解决? 问题答案: 这是什么意思? 首先,让我们看一下: 当应用程序尝试使用其字符串名称通过其字符串名称加载类时抛出: 课堂教学中的方法。 课堂教学中的方法。 课堂教学