2013-04-03 46 views
36

Tôi có một dự án web động mà tôi đang làm việc để di chuyển ứng dụng jsp/servlet từ JRun sang Tomcat.Lỗi Eclipse ... không thể được giải quyết thành loại

Tôi gặp lỗi: com.ibm.ivj.eab.dab.DatastoreJDBC không thể được giải quyết thành một loại.

Tôi có các tệp * .class nằm bên trong thư mục com/ibm/ivj/eab/dab (chính xác cách tôi tìm thấy chúng). Tôi đã thử tạo một file jar và thêm vào đường dẫn build thông qua "Add External Jar", tôi cũng đã thử thêm một "External Class Folder" và trỏ đến thư mục chứa thư mục "com" đang được đề cập đến.

Tuy nhiên, lỗi vẫn tồn tại. Điều kỳ lạ là nếu tôi bắt đầu gõ tên gói nhật thực sự tự động hoàn thành lớp cho tôi! (hình bên dưới). bất kì ý kiến ​​nào đều được đánh giá cao. Có lẽ các lớp đã được biên soạn cho một phiên bản java cũ hơn nhiều và điều đó gây ra rắc rối? Có lẽ có điều gì đó tôi cần phải làm để đảm bảo các lớp học kết thúc trong thư mục WEB-INF/lib?

I enter image description here

+0

Có báo cáo nhập trong mã của bạn cho lớp học không? –

+0

@ChrisGerken không, tôi vừa thêm <% @ page import = "com.ibm.ivj.eab.dab. *"%> Lên trên cùng (đây là trang JSP) và cũng <% @ page import = "com .ibm.ivj.eab.dab.DatastoreJDBC "%> điều thú vị là Eclipse không quan tâm đến lần nhập đầu tiên nhưng đánh dấu thứ hai là một lỗi. – mikey

Trả lời

36

Nhấp chuột phải vào tên dự án của bạn. Nhấp vào thuộc tính. Nhấp vào Đường dẫn xây dựng Java. Nhấp vào Thêm thư mục lớp. Sau đó chọn lớp học của bạn. Ngoài ra, thêm lọ nên làm việc mặc dù bạn tuyên bố rằng bạn đã cố gắng đó. Ngoài ra, "bạn đã thử tắt và bật lại" chưa? (Khởi động lại Eclipse).

+0

Khi tôi "Thêm thư mục lớp" tôi nên chọn thư mục có chứa thư mục "com" (grand-great grandaddy) hoặc tôi nên chọn thư mục chứa tệp * .class? – mikey

+0

Tìm thấy một bộ khác nhau, rộng lớn hơn bao gồm các gói này, cuộn mà vào một cái lọ, và cho đến nay rất tốt. Cảm ơn! – mikey

+4

Nó chắc chắn có vẻ như nhật thực có thể là một chút lỗi khi nói đến việc xác nhận JSP. "Biến nó đi và trở lại một lần nữa" giúp nó lấy lại chân của nó, nhưng tôi cũng thấy rằng thực hiện một dự án -> sạch ... có thể giúp đỡ cũng như để thiết lập những điều thẳng. – mikey

32

Ngoài ra, nếu bạn đang sử dụng dự án mavenised thì hãy thử cập nhật dự án của bạn bằng cách nhấp vào Alt + F5. Hoặc nhấp chuột phải vào ứng dụng và chuyển đến dự án maven/update.

Nó xây dựng tất cả các thành phần của bạn và giải quyết nếu có bất kỳ lỗi nhập nào ở đó.

+3

Ai đó có thể giải thích lý do tại sao phải thực hiện điều này? Tại sao nhật thực không thể tự tìm ra nó? – XMight

+1

Tôi muốn nghe câu hỏi của @XMight. – Erutan409

+0

Tôi gặp vấn đề này và cố gắng cập nhật dự án maven vô số lần nhưng nó không giải quyết nó cho đến khi tôi xóa các chỉ mục JDT như thế này: [answer on Làm thế nào bạn sẽ truy cập vào chỉ mục JDT Eclipse?] (Https://stackoverflow.com/a/3898528/6359607) – milijan

8

Để giải quyết lỗi "... không thể được giải quyết một loại .." làm các việc sau:

  1. Nhấp chuột phải vào lớp và chọn 'Build Path -> Loại trừ'
  2. Again nhấp chuột phải vào lớp và chọn "Đường dẫn xây dựng -> Bao gồm"

Nó phù hợp với tôi.

+0

Vì vậy, làm mát này hoạt động cho tôi :) – Sam

+0

Cảm ơn Nó thực sự làm việc cho tôi ... – priyanka

1

Giải quyết sự cố bằng cách thả bình vào WEB_INF/lib.

0

Đối với người dùng maven:

  • Nhấp chuột phải vào dự án
  • Maven
  • Cập nhật dự án
0

sao chép các tập tin jar sẽ giải quyết. Nếu bạn có khả năng sao chép mã từ bất kỳ hướng dẫn nào, hãy đảm bảo rằng tên lớp được viết đúng trong trường hợp chính xác ... ví dụ: tôi đã sao chép mã từ một trong các hướng dẫn có phần giới thiệu trong S cap. Eclipse đã liên tục ném lỗi và tôi cũng đã làm một chút googling ... tất cả mọi thứ đã được ok và phải mất 30 phút để tôi nhận ra vấn đề nhỏ nắp.Chắc chắn điều này sẽ giúp một ai đó

1
  • Nhấp chuột phải Dự án>Thuộc tính
  • Java Build Path>Thêm Class Thư mục
  • Chọn bin thư mục
  • Bấm ok
  • Chuyển Trình tự, xuất khẩu tab
  • Chọn mới được bổ sung bin con đường di chuyển UP
  • Bấm Áp dụng nút

enter image description here

0

Đối với nhiều người dùng mới đừng quên thêm dấu sao (*) sau câu lệnh nhập nếu bạn muốn sử dụng tất cả các lớp trong gói .... ví dụ

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 
    } 
} 
Các vấn đề liên quan