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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 04:13:11  来源:igfitidea点击:

How can I fix this "package does not exist" error?

java

提问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

javacdoes 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.,然后一切正常。