2013-06-21 103 views
6

問題(S):查找的Eclipse編譯.class文件

我怎麼只編譯一個類?我如何將它放入類文件(我創建的)? Eclipse是否僅在運行時自動編譯所有類?

後面的故事:

我跟隨tutorial,它告訴我:

把編譯後的class放到WEB-INF/classes中。

凡類:

package org.odata4j.tomcat; 
import java.util.Properties; 
import org.core4j.Enumerable; 
import org.core4j.Func; 
import org.core4j.Funcs; 
import org.odata4j.producer.ODataProducer; 
import org.odata4j.producer.ODataProducerFactory; 
import org.odata4j.producer.inmemory.InMemoryProducer; 

public class ExampleProducerFactory implements ODataProducerFactory { 

    @Override 
    public ODataProducer create(Properties properties) { 
    InMemoryProducer producer = new InMemoryProducer("example"); 

    // expose this jvm's thread information (Thread instances) as an entity-set called "Threads" 
producer.register(Thread.class, Long.class, "Threads", new Func<Iterable<Thread>>() { 
    public Iterable<Thread> apply() { 
    ThreadGroup tg = Thread.currentThread().getThreadGroup(); 
    while (tg.getParent() != null) 
     tg = tg.getParent(); 
    Thread[] threads = new Thread[1000]; 
    int count = tg.enumerate(threads, true); 
    return Enumerable.create(threads).take(count); 
    } 
}, Funcs.method(Thread.class, Long.class, "getId")); 

return producer; 
    } 
} 
+2

'「Eclipse是否在運行時自動編譯所有的類?」 - Eclipse會在您鍵入時自動編譯。這是快速識別編譯錯誤的一種方法。如果你查看bin子目錄,你會看到類文件。 –

+0

通常eclipse會爲你做這個。如果你進入eclipse構建路徑(右鍵單擊你的項目的屬性 - >構建路徑),然後選擇'源',它應該顯示一個輸出文件夾。 –

+0

如果你的路徑上有java文件,你可以使用'javac'來編譯你想要的任何java文件。 – thatidiotguy

回答

8

當您保存您的.java文件時,如果沒有編譯器錯誤,Eclipse會將其編譯爲.class文件。您通常可以在項目的bin子目錄中找到該文件。特別是,它將在bin/org/odata4j/tomcat中,因爲您已宣佈您的課程屬於org.odata4j.tomcat包。隨意複製這個文件在任何你想要的地方。

+0

bin子目錄應該在哪裏? – AllieCat

+2

在項目的根目錄中,但它可能是不同的文件夾,具體取決於項目配置。您可以在「構建路徑」部分的「屬性」菜單中選中此項。 – MaQy

2

你的java文件的位置應該是:org/odata4j/tomcat/ExampleProducerFactory.java 那麼你可以在命令行中執行:javac org/odata4j/tomcat/ExampleProducerFactory.java 這將創建編譯的類文件:org/odata4j/tomcat/ExampleProducerFactory.class 把在一個文件夾WEB-INF/classes/org/odata4j/tomcat/ExampleProducerFactory.class

但更好的是,在eclipse中創建「動態Web項目」,它將爲您處理所有事情(只需使用default S)。最終的結果將是一個.war文件,你可以通過菜單選項來創建:文件 - >出口

這樣的.war文件可以在任何Web容器進行部署,如Tomcat。在你的tomcat中尋找一個autodeploy目錄,或者使用tomcat管理控制檯來部署它。

0

假設這個類是在一個名爲ExampleProducerFactory.java文件,您可以通過導航到該目錄包含的文件,並鍵入

的javac ExampleProducerFactory.java

這將在命令行編譯創建一個名爲ExampleProducerFactory.class的文件,您可以將其移動到所需的目錄。

+1

請注意,如果啓用了Eclipse自動構建,如果您恰好將該類文件放入配置的輸出目錄中,它將快速覆蓋生成的類文件。 (如'WEB-INF/classes') –

+0

@亨利檢查編輯歷史記錄。當我發佈這個答案的時候,問題是「如何編譯一個Java類?」 – Brian

+0

投票被鎖定,直到您編輯您的答案。所以......如果你編輯我會不打倒。 –

0

爲了在Eclipse中正常工作,您需要在「動態Web項目」中工作,而不是在普通的「Java項目」中工作,該工具在Eclipse的標準Java下載中不可用。

您需要下載並使用Eclipse的Java EE風格,或者將WTP添加到當前安裝中以獲取它。

請注意,使用簡單的Web應用程序啓動和運行最簡單的方法是使用Netbeans,它在Java EE風格中默認連接了默認(包括Tomcat)。

0

成功編譯.java後,課程將在項目工作區下的bin文件夾中。

2

我發現我的班文件項目 - >屬性 - >Java構建路徑在現場默認的輸出文件夾。 對我來說默認是'project-name/target/classes'。

+1

因爲您的項目正在使用Maven。 Eclipse簡單地尊重它並使用maven約定。 –

0

我只是打開java文件位置(在資源管理器右鍵單擊 - >顯示在 - >系統資源管理器)轉到工作區的頂部,並搜索文件的名稱沒有擴展名。 它也給我.class文件。我只是刪除它。