java 如何修复此“包不存在”错误?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3974114/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How can I fix this "package does not exist" error?
提问by Ethan
On OS X.
在 OS X 上。
$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02-279-10M3065)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01-279, mixed mode)
Here's my whole project:
这是我的整个项目:
$ ll
total 1072
-rw-r--r-- 1 ethan ethan 1316 Oct 19 17:17 BlackberryDataExtractor.class
-rw-r--r-- 1 ethan ethan 1439 Oct 19 18:05 BlackberryDataExtractor.java
-rw-r--r--@ 1 ethan ethan 537303 Apr 19 2010 sqljdbc4.jar
<-- MS SQL Server JDBC driver
Here's BlackberryDataExtractor.java
. It doesn't really do anything yet. I'm just trying to get basic stuff working like DB connection:
这是BlackberryDataExtractor.java
。它实际上还没有做任何事情。我只是想让基本的东西像数据库连接一样工作:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.microsoft.sqlserver.jdbc;
class BlackberryDataExtractor {
public static void main(String[] args) {
Connection con = BlackberryDataExtractor.getConnection();
}
public static final Connection getConnection()
{
Connection con = null;
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection("jdbc:sqlserver://[ etc... ]");
String SQL = "SELECT uc.MailboxSMTPAddr AS email, sd.PhoneNumber AS phone_number"
+ "FROM dbo.UserConfig uc, dbo.SyncDeviceMgmtSummary sd"
+ "WHERE sd.UserConfigId = uc.Id";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(SQL);
while (rs.next()) {
System.out.println(rs.getString("email") + ", " + rs.getString("phone_number"));
}
rs.close();
stmt.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
return con;
}
}
It won't compile. Here's the error:
它不会编译。这是错误:
$ javac -cp "$CLASSPATH;*.jar" BlackberryDataExtractor.java
BlackberryDataExtractor.java:4: package com.microsoft.sqlserver does not exist
import com.microsoft.sqlserver.jdbc;
^
BlackberryDataExtractor.java:23: cannot find symbol
symbol : class Statement
location: class BlackberryDataExtractor
Statement stmt = con.createStatement();
^
BlackberryDataExtractor.java:24: cannot find symbol
symbol : class ResultSet
location: class BlackberryDataExtractor
ResultSet rs = stmt.executeQuery(SQL);
^
3 errors
回答by matt b
javac
does not understand wildcards like *.jar
. You have to be explicit.
javac
不理解像*.jar
. 你必须明确。
Try javac -cp "$CLASSPATH;sqljdbc4.jar" ...
尝试 javac -cp "$CLASSPATH;sqljdbc4.jar" ...
回答by kkress
Does speciffing the jar file directly instead of with a glob "*.jar" work?
直接指定 jar 文件而不是使用 glob "*.jar" 是否有效?
javac -cp "$CLASSPATH;sqljdbc4.jar" BlackberryDataExtractor.java
It also looks like you're missing a few java.sql. imports. (ResultSet and Statement)
看起来您还缺少一些 java.sql。进口。(结果集和语句)
回答by Elhatron
I had the same problem. When I was writing and executing a program in Eclipse everything worked correctly, but when I was executing it in terminal (Ubuntu) then I got an error "package com.microsoft.sqlserver does not exist". I'm not sure if it is a good solution but I exported my project to jar file and then ran java -jar "filename".jar.
and then everything was ok.
我有同样的问题。当我在 Eclipse 中编写和执行程序时,一切正常,但是当我在终端 (Ubuntu) 中执行它时,出现错误“包 com.microsoft.sqlserver 不存在”。我不确定这是否是一个好的解决方案,但我将我的项目导出到 jar 文件,然后运行java -jar "filename".jar.
,然后一切正常。