2013-04-03 84 views
36

我有一個動態Web項目,我正致力於將jsp/servlet應用程序從JRun遷移到Tomcat。Eclipse錯誤...無法解析到某種類型

我收到錯誤:com.ibm.ivj.eab.dab.DatastoreJDBC不能被解析爲一個類型。

我有* .class文件坐在一個COM/IBM/IVJ/EAB/DAB文件夾(我究竟是如何發現他們)內。我已經嘗試創建一個jar文件,並通過「Add External Jar」添加到構建路徑中,我也嘗試添加一個「External Class Folder」並指向包含有問題的「com」目錄的文件夾。

不過,錯誤仍然存​​在。奇怪的是,如果我開始輸入包名eclipse實際上會自動爲我完成課程! (如下圖)。任何想法將不勝感激。也許這些類是爲了更老的java版本而編譯的,而且這會造成麻煩?也許我需要做些什麼來確保類在WEB-INF/lib目錄中結束?

enter image description here

+0

在您的代碼中是否存在導入語句? –

+0

@ChrisGerken no我只是在頁面頂部添加了<%@ page import =「com.ibm.ivj.eab.dab。*」%>(這是一個JSP頁面),並且還有 <%@ page import =「com .ibm.ivj.eab.dab.DatastoreJDBC「%>有趣的是Eclipse不介意第一次導入,而是將第二次導入爲錯誤。 – mikey

回答

36

右鍵點擊您的項目名稱。點擊屬性。單擊Java構建路徑。點擊添加班級文件夾。然後選擇你的班級。另外,添加罐子應該可以工作,儘管你聲稱你嘗試過。此外,「你有嘗試關掉它,然後再打開」嗎? (重新啓動Eclipse)。

+0

當我「添加類文件夾」,我應該選擇包含「com」目錄(偉大的grandaddy)的文件夾,還是應該選擇包含* .class文件的文件夾? – mikey

+0

發現了一套不同的,更廣泛的套件,包括這個套件,將其滾動到一個罐子中,並且非常好。謝謝! – mikey

+4

當涉及到驗證JSP時,它肯定看起來像eclipse可能有點bug。 「關掉又重新開啓」可以幫助它恢復原狀,但我也發現,執行一個項目 - >清潔......也可以幫助您設置正確的方向。 – mikey

32

另外如果您正在使用mavenised項目,然後嘗試通過單擊Alt + F5來更新您的項目。 或者右鍵單擊應用程序並轉到maven/update項目。

它構建所有組件並解決導入錯誤。

+3

有人可以解釋爲什麼它必須這樣做嗎?爲什麼eclipse無法自行解決它? – XMight

+1

我想回復@XMight的問題。 – Erutan409

+0

我有這個問題,並嘗試更新Maven項目無數次,但它沒有解決它,直到我刪除這樣的JDT索引:[答案您將如何訪問Eclipse JDT索引?](https://stackoverflow.com/a/3898528/6359607) – milijan

8

爲了解決這個錯誤「...不能被解析爲一個類型。」方法如下:

  1. 右鍵單擊類,然後選擇‘構建路徑 - >排除’
  2. 再次右鍵單擊課程並選擇「Build Path - > Include」

它適用於我。

+0

所以很酷這個作品對我來說:) – Sam

+0

謝謝它真的爲我工作... – priyanka

1

通過將jar放入WEB_INF/lib來解決問題。

0

Maven的用戶:

  • 右鍵單擊該項目
  • Maven的
  • 更新項目
0

複製的jar文件將解決。如果您有任何機會從任何教程複製代碼,請確保類名拼寫正確的情況下......例如,我複製了來自其中一個教程的代碼在S capr solr。 Eclipse不斷拋出錯誤,我也做了一些Google搜索...一切都很好,花了30分鐘讓我意識到這個帽子的小問題。相信這將幫助別人

1
  • 右鍵單擊項目>屬性
  • Java構建路徑>添加類文件夾
  • 選擇文件夾
  • 點擊確定
  • 交換機訂單和出口標籤
  • 選擇新添加的bin路徑移動UP
  • 點擊應用按鈕

enter image description here

0

對於許多新用戶不要忘記添加如果要使用包中的所有類,請在導入語句後加星號(*)...例如

import java.io.*; 

public class Learning 
{ 
    public static void main(String[] args) 
    { 
     BufferedInputStream sd = new BufferedInputStream(System.in); 
      // no error 
    } 
} 

============================================== ==================

import java.io; 

public class Learning 
{ 
    public static void main(String[] args) 
    { 
     BufferedInputStream sd = new BufferedInputStream(System.in); 
      // BufferedInputStream cannot be resolved to a type error 
    } 
} 
相關問題