2011-12-03 19 views
5

Tôi đã viết một plugin tốt đẹp, mà incoporates một số nguồn java tạo ra.Eclipse PDE xây dựng/xuất khẩu plugin/tính năng/cập nhật trang web không tôn vinh mã hóa tập tin - làm thế nào để cấm biên dịch lại

Tôi có thể xây dựng dự án tốt. Tôi có thể chạy nó trong một cấu hình chạy mà khởi động nhật thực khác và nó hoạt động theo ý thích của tôi.

Vì vậy, tôi nghĩ: thời gian để có thể cài đặt.

Do đó tôi đã tạo dự án tính năng và dự án trang web cập nhật và xây dựng và xuất dự án đó và có vẻ như nó hoạt động tốt. Tôi thậm chí có thể "Cài đặt" nó từ trang web cập nhật của tôi, hoặc xuất khẩu các plugin trực tiếp trong bàn làm việc đang chạy. Tôi thấy rằng nó được cài đặt nhưng nếu tôi cố gắng mở một tập tin mà sẽ kích hoạt plugin của tôi, nó ném ngoại lệ. Cụ thể, nó cho tôi biết có "vấn đề biên dịch chưa được giải quyết". Sau khi tìm kiếm dài, xây dựng lại (không có lỗi), kiểm tra lại một lần nữa và một lần nữa tôi tìm thấy một tập tin logs.zip, với một thư mục có tên tương tự như plugin của tôi và trong đó một tập tin 54k (tâm trí bạn, đó là năm 2011 và không gian đĩa là vô cùng khan hiếm, rõ ràng) với tên hài hước @dot.log. Làm thế nào tuyệt vọng phải được nhìn vào một tập tin như vậy ?! Nhưng, bất ngờ, ngạc nhiên, nó quay ra có 54K thông báo lỗi như sau:

# 02.12.11 19:58:55 MEZ 
# Eclipse Compiler for Java(TM) 0.B76_R37x, 3.7.1, Copyright IBM Corp 2000, 2011. All rights reserved. 
---------- 
1. ERROR in X:\dev\frege\FregIDE\src\frege\IO.java (at line 1451) 
final public static Consts ij = new Consts(); 
          ^
Syntax error on token "Invalid Character", delete this token 

Các "nhân vật không hợp lệ", tất nhiên, nhân vật nhận dạng java hoàn toàn hợp pháp, nó chỉ là họ không kí tự ASCII. Đây là lý do tại sao tôi có tất cả các tệp được đặt thành UTF-8, đã đặt UTF-8 làm mã hóa mặc định và như đã nói ở trên, với công cụ xây dựng bình thường, nó hoạt động hoàn hảo.

Có cách nào để tránh nhật thực khỏi biên dịch lại mọi thứ khi tôi xuất trang web cập nhật, tính năng hoặc plugin. Đây là những gì tôi thích nhất vì mọi thứ đã được biên dịch và biên dịch lại mất thêm một phút nữa. (Thậm chí còn có một lá cờ "Sử dụng các tệp lớp được biên dịch trong không gian làm việc" nhưng có vẻ như không làm gì cả - nó chỉ biên dịch lại.)

Thay thế: Tôi có thể sửa đổi tập lệnh mà nó sử dụng để xây dựng nó không? Tôi không thể tìm thấy kịch bản kiến ​​mà anh ta sử dụng để xây dựng. Nếu tôi có thể tra cứu bước javac và đặt mã UTF-8 ở đó (đó là điều tôi mong đợi là vấn đề.) Có hộp kiểm "Lưu dưới dạng tập lệnh Ant", nhưng tệp Ant chỉ chứa:

<?xml version="1.0" encoding="UTF-8"?> 
<project default="feature_export" name="build"> 
<target name="feature_export"> 
    <pde.exportFeatures destination="x:\dev\frege\FregeUpdateSite" 
           exportSource="false" exportType="directory" 
           features="FregeFeature" useJARFormat="true"/> 
</target> 
</project> 

Làm cách nào để làm cho nhật thực sử dụng các cài đặt chính xác cho bản dựng biên dịch nếu tôi không thể ngăn không cho nó biên dịch?

+0

Tìm ra trong khi đó một giải pháp có thể là đặt '-Dfile.encoding = UTF-8' trong eclipse.ini – Ingo

Trả lời

7

Nếu bạn đang sử dụng tác vụ "pde.exportFeatures" để xuất từ ​​không gian làm việc, thì tôi tin rằng có một thuộc tính "useWorkspaceCompiledClasses" để sử dụng các tệp nhị phân từ không gian làm việc. Điều này tương đương với hộp kiểm trong trình hướng dẫn xuất.

Lưu ý rằng tác vụ pde.exportFeatures là xuất từ ​​giao diện người dùng và khác với headless PDE/Build. properties mà Francis đề cập là dành cho PDE/Build không đầu. Trong quá trình xuất, PDE/UI quản lý chúng cho bạn và bạn không thể thay đổi chúng.

plug-in and feature specific properties sẽ ảnh hưởng đến xuất UI cũng như xây dựng không đầu. (Tôi nhận được liên kết không đúng trong bình luận của tôi về câu trả lời của Francis).

Tôi khuyên bạn nên đặt mã hóa trong tệp build.properties của plugin thay vì sử dụng lại tệp nhị phân không gian làm việc. Tôi cũng khuyên bạn nên thiết lập một bản dựng PDE/Build không đầu thực thay vì xuất từ ​​nhiệm vụ UI.

+0

Cảm ơn câu trả lời. Để làm rõ: Tại sao chính xác bạn đề nghị xây dựng không đầu? Bạn có đề nghị nói chung hay chỉ cho tôi vì tôi có thể giải quyết vấn đề của tôi dễ dàng hơn? – Ingo

+1

Nó thực sự là một thương mại giữa sự đơn giản và toàn quyền kiểm soát/tùy chỉnh. Tôi không tin bất kỳ thuộc tính nào trong liên kết mà Francis đưa ra đều có sẵn với pde.exportFeatures, nhiệm vụ đó là chọn các giá trị mặc định hợp lý cho bạn. Tuy nhiên, một xây dựng không đầu tự động hoàn toàn có thể phức tạp và có rất nhiều thứ để học. Nó thực sự phụ thuộc vào nhu cầu của bạn, nhưng bạn có thể thiết lập một xây dựng không đầu cơ bản mà sau đó có thể phát triển và được tùy chỉnh khi bạn nhận được nhiều yêu cầu hơn cho nó. –

6

Bạn có thể sử dụng các tập tin build.properties đó là một phần của PDE xây dựng để thiết lập các tùy chọn trình biên dịch cho các biên dịch đã xong trong xây dựng: http://help.eclipse.org/indigo/topic/org.eclipse.pde.doc.user/reference/pde_builder_config.htm (sử dụng tùy chọn -encoding)

Không có cách nào mà tôi biết sử dụng các tệp lớp từ không gian làm việc của bạn trong bản dựng.

+2

Xem thêm thuộc tính" javacDefaultEncoding "và" javacCustomEncodings "trong tệp build.properties của gói của bạn. Điều này cho phép bạn đặt mã hóa cho mỗi gói hoặc thậm chí ở cấp thư mục/tệp. http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.pde.doc.user%2Freference%2Fpde_builder_config.htm –

+1

Tôi rất muốn chia tiền thưởng giữa bạn và Andrew. Nếu điều này không làm việc, bạn sẽ nhận được tiền thưởng (để được đầu tiên) và Andrews Trả lời sẽ được chấp nhận. – Ingo

+1

Cảm ơn Ingo, Andrew thực sự là anh chàng về điều này khi anh ta làm việc trên PDE build. Tôi sẽ upvote rất nhiều công cụ của mình để chia sẻ sự giàu có. :) –

Các vấn đề liên quan