2014-09-05 69 views
0

最近我開始使用文本編輯器(文本隊友)而不是eclipse來用Java編程。我在文件夾B(/ Users/kevincastro/Documents/Code/estructuras/datastructures)中的文件夾A(/ Users/kevincastro/Documents/Code/estructuras/clases)和file2.java中創建了file1.java。我想將file2.java導入到file1.java中,但它沒有提供。我已經試過:導入java類文本編輯器

import Users.kevincastro.Documents.Code.estructuras.datastructures.*; import datastructures.*; import Documents.Code.estructuras.datastructures.*;

他們沒有工作。我得到這個錯誤「包Users.kevincastro.Documents.Code.estructuras.datastructures不存在」

任何幫助嗎?謝謝

+0

你編譯過file2嗎?當您嘗試構建file1時,是否提供了對file2.class的類路徑引用? – MadProgrammer 2014-09-05 22:02:36

+0

我試過了,仍然不起作用。而不是導入該文件我想導入hole文件夾,因爲它包含的mora不是我正在使用的一個file.java – Kevjumba94 2014-09-05 22:06:33

+0

您可能需要考慮使用構建工具,如ant – MadProgrammer 2014-09-05 22:14:23

回答

0

看起來這裏有一個嚴重的誤解。你似乎認爲import聲明實際上是「導入文件」或類似的東西。它沒有做任何事情。 import語句只存在,以便您不必在每次使用它時編寫完全限定名稱的類。看看下面的代碼:

package a 
import b.Bar 

public class Foo { 
    private Bar bar = new Bar(); 
    public static void main(String [] args) { 
     System.out.println(bar); 
    } 
} 

這是完全一樣的文字:

package a 

public class Foo { 
    private b.Bar bar = new b.Bar(); 
    public static void main(String [] args) { 
     System.out.println(bar); 
    } 
} 

但它並沒有說太多關於那裏b.Bar所在的文件的位置!因此,在文本編輯器或源代碼中沒有要導入的文件。你唯一知道的是b.Bar必須位於名爲b的文件夾中 - 但該文件夾可以在任何地方。

  1. 當你編譯a.Foo,javac的(編譯器),同時必須要麼編譯b.Bar,或者在類路徑訪問b.Bar。假設您的源代碼位於/SomeDir/src/a/Foo.java和/SomeDir/src/b/Bar.java中,並且您編譯爲/ SomeDir/target。例子:

    • 一次編譯這兩個類(事實上,在/ SomeDir/src目錄的所有Java源文件):javac -d /SomeDir/target /SomeDir/src/**/*.java

    • 編譯美孚,引用酒吧(已編譯/ SomeOtherDir/B /酒吧的.class):javac -d /SomeDir/target -classpath /SomeOtherDir /SomeDir/src/a/Foo.java

    • 或者Bar.class可能是一個jar文件,等

  2. 當你運行Foo,Bar必須位於類路徑中,以便它可以由類加載器找到。如果你想運行/SomeDir/a/Foo.class,而Bar在/SomeOtherDir/b/Bar.class中:java -classpath "/SomeDir:/SomeOtherDir" a.Foo

  3. 一旦你測試了所有這些,你應該準備好愛上現代構建Maven或Gradle等工具,這將使您的生活變得更加輕鬆。