Mở menu Tệp Khi mở một tệp bên ngoài (nó có thể xử lý các tệp, chẳng hạn như tệp Java), tôi nhận được một trang -6ren">
cuốn sách gpt4 ai đã làm

java - Trình cắm trình soạn thảo Eclipse: "LỖI" khi mở tệp bên ngoài dự án

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 03:42:52 25 4
mua khóa gpt4 Nike

Tôi đang phát triển một plugin soạn thảo cho nhật thực. Nó hoạt động tốt trên các tệp trong dự án nhật thực, nhưng khi mở tệp bên ngoài thông qua menu "Tệp->Mở tệp" (nó có thể xử lý các tệp, chẳng hạn như tệp Java), tôi nhận được một trang chỉ hiển thị một đường ngang màu xanh và Từ "lỗi". Nhật ký lỗi của Eclipse trống, cũng như các tệp nhật ký trong thư mục .metadata.

Điều gì có thể gây ra điều này? Làm cách nào để chẩn đoán lỗi khi tôi không có thông báo lỗi cho tôi biết cần tìm ở đâu? Dường như không có cách nào để ghi nhật ký chi tiết hơn từ nhật thực.

biên tập:

Tôi thấy rằng nguồn gốc của vấn đề gần giống với những gì jamesh đã đề cập, nhưng không phải là ClassCastException - đơn giản là trình xem văn bản không có gì để hiển thị tài liệu ví dụ vì StorageDocumentProvider.createDocument() Trả về giá trị rỗng. Lý do là vì nó chỉ biết làm org.eclipse.ui.IStorageEditorInput Một phiên bản của tài liệu được tạo ra, nhưng trong trường hợp này nó nhận được Phiên bản của org.eclipse.ui.ide.FileStoreEditorInput, nó không thực hiện giao diện (interface) mà thực hiện org.eclipse.ui.IURIEditorInput

câu trả lời hay nhất

Tôi gặp vấn đề tương tự và cuối cùng đã tìm ra giải pháp hiệu quả cho mình. Bạn phải cung cấp 2 nhà cung cấp tài liệu khác nhau - đầu tiên là phần mở rộng tệp trong bàn làm việc Nhà cung cấp tài liệu tệp, sau đó mở rộng cho các tài nguyên khác bên ngoài không gian làm việc Nhà cung cấp tài liệu TextFile. Sau đó đăng ký đúng nhà cung cấp dựa trên thông tin đầu vào trong trình chỉnh sửa doSetInput phương pháp như sau:

IDocumentProvider riêng createDocumentProvider(IEditorInput input) {
if(input instanceof IFileEditorInput){
trả về XMLTextDocumentProvider mới();
} else if(input instanceof IStorageEditorInput){
trả về XMLFileDocumentProvider mới();
} khác {
trả về XMLTextDocumentProvider mới();
}
}

@Ghi đè
được bảo vệ cuối cùng void doSetInput(IEditorInput input) ném CoreException {
setDocumentProvider(createDocumentProvider(input));
super.doSetInput(đầu vào);
}

Sau đó, trong nhà cung cấp tài liệu mới của bạn (mở rộng TextFileDocumentProvider) hãy chèn nội dung như thế này:

FileInfo được bảo vệ createFileInfo(Phần tử đối tượng) ném CoreException {
Thông tin FileInfo = super.createFileInfo(element);
if(thông tin==null){
thông tin = createEmptyFileInfo();
}
Tài liệu IDocument = info.fTextFileBuffer.getDocument();
nếu (tài liệu != null) {

/* đăng ký trình phân vùng của bạn và những thứ khác tại đây
cách tương tự như trong nhà cung cấp tài liệu đầu tiên của bạn */
}
trả lại thông tin;
}

Điều này hiệu quả với tôi :) Cuối cùng tôi phải đề cập rằng tôi không thông minh lắm và tôi đã sao chép giải pháp này từ dự án Amateras (plugin soạn thảo HTML nguồn mở cho nhật thực)

Về java - Trình cắm trình soạn thảo Eclipse: "ERROR" khi mở tệp bên ngoài dự án, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/455210/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress