Eclipse: Gói được khai báo không khớp với gói mong đợi


86

Tôi gặp sự cố khi nhập một dự án bên ngoài. Tôi đi tới Tệp -> Nhập ... -> Dự án hiện có vào Workspace, chọn thư mục chứa dự án và mọi thứ được nhập - nhưng tên gói của dự án dường như không giống như những gì Eclipse mong đợi. Tất cả các tên gói đều có tiền tố:

prefix.packagename1
prefix.packagename2

Vân vân.

Nhưng Eclipse mong đợi

src.prefix1.prefix.packagename1
src.prefix1.prefix.packagename2

vv vì thư mục là src / prefix1 / prefix / package1

Tôi không thực sự muốn lộn xộn với mã bên ngoài. Làm cách nào để yêu cầu Eclipse bỏ qua thư mục "src / prefix1"? Hoặc tôi có thể làm gì khác?


Tôi thêm package (name of package under which the file to be ) vào lúc bắt đầu của tập tin
Sài Ram

Câu trả lời:


105

Chỉ cần đi vào đường dẫn xây dựng và thay đổi đường dẫn nguồn để được src/prefix1thay thế src.

Có thể dễ dàng nhất là nhấp chuột phải vào srcthư mục và chọn "Build Path / Remove from build path", sau đó tìm src/prefix1thư mục, nhấp chuột phải vào nó và chọn "Build Path / Use as source folder".


2
Làm cách nào để hoàn tác bất cứ điều gì vừa làm? Tôi đã nhấp vào "Xây dựng đường dẫn / Sử dụng làm thư mục nguồn" và không có gì hoạt động nữa. Chỉnh sửa: Câu trả lời cho câu hỏi của tôi là phải đi vào "Configure Build Path" và loại bỏ những điều sôi nổi từ danh sách đó không phải là src / hoặc gen /
ArtOfWarfare

25
Lưu ý rằng đề xuất của Jon hoạt động nhưng có thể cần khởi động lại nhật thực.
Samik R

1
!! Nếu bạn vẫn thấy lỗi sau khi thay đổi thư mục nguồn, hãy xây dựng dự án. Eclipse đôi khi khiến tôi muốn đập vỡ một thứ gì đó.
MattC

4
Đóng / Mở prj đã làm việc cho tôi ... Eclipse là một công cụ lớn, đôi khi nó có thể quên mất mọi thứ
niken

Cảm ơn bạn đời, giải pháp tuyệt vời.
Runcorn

70

Tôi vừa gặp sự cố này, và vì giải pháp của ông Skeet không phù hợp với tôi, nên tôi sẽ chia sẻ cách tôi giải quyết vấn đề này.

Hóa ra là tôi đã mở tệp java dưới 'src' trước khi khai báo nó là một thư mục nguồn.

Sau khi nhấp chuột phải vào thư mục 'src' trong eclipse, chọn 'đường dẫn xây dựng', sau đó chọn 'Sử dụng làm Thư mục nguồn'

Đóng và mở lại tệp java đã mở (F5 làm mới nó không hoạt động).

Đã cung cấp đường dẫn đến tệp java từ "prefix1" trở đi cùng dòng với gói trong tệp (ví dụ từ prefix1.prefix.packagename2 câu hỏi của người yêu cầu). Điều này sẽ hoạt động

Eclipse không còn phàn nàn về 'src.'


1
Đây chính là nó. Khá đơn giản nhưng đã khiến tôi bị mắc kẹt trong một thời gian. Cảm ơn!
Christian Vielma

Sau khi thiết lập đường dẫn xây dựng, tôi cũng cần đóng và mở lại tệp. Cảm ơn!
ed-

Đúng! Làm việc cho tôi là tốt.
Robert Casey

11

Di chuyển sự cố của bạn các tệp * .java sang thư mục khác.

Nhấp vào mục 'src' và nhấn "F5".

Chữ thập đỏ sẽ tiêu tan.

Trả các tệp * .java của bạn về "đường dẫn gói", nhấp vào mục 'src' và nhấn "F5".

Tất cả sẽ ổn.


2

Nếu bạn đã nhập một dự án hiện có, thì chỉ cần xóa các thư mục nguồn của bạn rồi thêm lại chúng để tạo đường dẫn và khởi động lại nhật thực. Hầu hết các lần nhật thực sẽ tiếp tục hiển thị lỗi cho đến khi bạn khởi động lại.


1

Xảy ra cho tôi sau khi các bản dựng không thành công chạy bên ngoài IDE. Nếu việc dọn dẹp không gian làm việc của bạn không hoạt động, hãy thử: 1) Xóa tất cả các dự án 2) Đóng và khởi động lại STS / eclipse, 3) Nhập lại các dự án


1

Điều duy nhất hiệu quả với tôi là xóa dự án và sau đó nhập lại. Hoạt động như một sự quyến rũ :)


0

Đôi khi tôi gặp sự cố này trong Eclipse khi nhập một dự án Android không có tệp .classpath. Cái mà Eclipse tạo ra không hoàn toàn giống cái mà Android mong đợi. Tuy nhiên, tất cả các tệp .classpath của Android thường là tương đối, vì vậy tôi chỉ sao chép một tệp .classpath chính xác từ một dự án khác qua .classpath không chính xác. Tôi đã tạo một video hướng dẫn cách tôi thực hiện việc này: https://www.youtube.com/watch?v=IVIhgeahS1Ynto


0

Giả sử dự án của bạn có một gói như package name1.name2.name3.name4 (gói được khai báo)

Trình khám phá gói của bạn hiển thị
gói cấp cao nhất có tên là
gói con name1.name2 có tên là name3.name4

Bạn sẽ gặp lỗi vì Eclipse trích xuất tên gói từ cấu trúc thư mục tệp trên đĩa bắt đầu từ điểm bạn nhập từ đó.

Trường hợp của tôi liên quan nhiều hơn một chút, có lẽ vì tôi đang sử dụng một liên kết tượng trưng đến một thư mục bên ngoài không gian làm việc của mình.

Lần đầu tiên tôi thử Build Path.Java Build Path.Source Tab.Link Source Button. Duyệt đến thư mục trước tên1 trong gói của bạn. Tên thư mục tùy thích (tôi nghĩ). Nhưng có vấn đề.

Sau đó, tôi đã xóa thư mục khỏi đường dẫn xây dựng và thử Tệp> Nhập ...> Chung> Hệ thống Tệp> nhấp vào Tiếp theo> Từ Thư mục> Duyệt ... đến thư mục ở trên tên1> nhấp vào nút Nâng cao> kiểm tra Tạo liên kết trong không gian làm việc> nhấp vào Kết thúc cái nút.


Thật. Trong trường hợp của tôi, tên dự án đã được thêm vào một hậu tố, -2.0.0-SNAPSHOT. Đã xóa tiền tố đó (đổi tên dự án ..) và mọi thứ đều hoạt động.
JRun

0

Đi tới thư mục src của dự án và sao chép tất cả mã từ nó vào một số vị trí tạm thời và xây dựng dự án. Và bây giờ sao chép mã thực tế từ vị trí tạm thời sang dự án src. Và chạy lại bản dựng. Vấn đề sẽ được giải quyết.

Lưu ý: Điều này dành riêng cho nhật thực.


0

Tôi đã tình cờ có cùng một vấn đề vừa rồi. Tuy nhiên, một số câu trả lời đầu tiên không phù hợp với tôi, tôi đề xuất một giải pháp: thay đổi tệp .classpath. Ví dụ, bạn có thể xác định đường dẫn của nút classpathentry như sau: path = "src / prefix1 / java" hoặc path = " src / prefix1 / resources ". Hy vọng nó có thể giúp ích.


0

Đối với tôi, vấn đề là tôi đang chuyển đổi một dự án hiện có thành maven, tạo cấu trúc thư mục theo tài liệu và nó đang hiển thị thư mục 'chính' như một phần của gói. Tôi đã làm theo các hướng dẫn tương tự như Jon Skeet / JWoodchuck và đi vào đường dẫn xây dựng Java, loại bỏ tất cả các đường dẫn xây dựng bị hỏng, sau đó thêm đường dẫn xây dựng của tôi thành 'src / main / java' và 'src / test / java'. dưới dạng các thư mục tài nguyên cho mỗi thư mục và nó đã giải quyết được sự cố.


0

Đường dẫn xây dựng phải chứa đường dẫn 'cho đến trước' của tên gói.

Ví dụ: nếu cấu trúc thư mục là: src/main/java/com/example/dao Nếu lớp chứa câu lệnh nhập 'package com.example.dao'khiếu nại về lỗi gói không chính xác, thì đường dẫn xây dựng sẽ include:src/main/java Giải quyết vấn đề.


-1
  1. Nhấp chuột phải vào thư mục bên ngoài có gói
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2
  1. Nhấp vào Đường dẫn xây dựng -> Xóa khỏi đường dẫn xây dựng.

  2. Bây giờ đi đến thư mục prefix1 trong phần thư mục của dự án của bạn.

  3. Nhấp chuột phải vào nó -> Đường dẫn xây dựng -> Sử dụng làm thư mục nguồn.

  4. Làm xong. Thư mục gói sẽ không hiển thị bất kỳ lỗi nào bây giờ. Nếu nó vẫn hiển thị, chỉ cần khởi động lại dự án.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.