2013-08-20 91 views
0

我已經給出了兩個java文件(主類(Practica1)和另一個類(Matriz2x2))。兩者都在同一個文件夾中。 主要的類實例是我給出的類,這是彈出「找不到符號」錯誤的地方。 Matriz2x2類編譯。Java「找不到符號」

我不會給每個類(方法,等...),所以,簡單的細節,Matriz2x2類是這樣的:

package mx.unam.ciencias.icc; 

public class Matriz2x2 { 

    private double a; 
    private double b; 
    private double c; 
    private double d; 

    public Matriz2x2(double a, double b, 
        double c, double d) { 
     this.a = a; 
     this.b = b; 
     this.c = c; 
     this.d = d; 
    } 
} 

這是主類:

package mx.unam.ciencias.icc; 

import java.util.Random; 

public class Practica1 { 

public static void main(String[] args) { 
    Random r = new Random(); 

    Matriz2x2 m = new Matriz2x2(r.nextDouble() * 100, 
           r.nextDouble() * 100, 
           r.nextDouble() * 100, 
           r.nextDouble() * 100); 
    } 
} 

這是發脾氣:

[email protected]:~/practica1/src/mx/unam/ciencias/icc$ javac Practica1.java 
Practica1.java:13: cannot find symbol 
symbol : class Matriz2x2 
location: class mx.unam.ciencias.icc.Practica1 
     Matriz2x2 m = new Matriz2x2(r.nextDouble() * 100, 
     ^
Practica1.java:13: cannot find symbol 
symbol : class Matriz2x2 
location: class mx.unam.ciencias.icc.Practica1 
     Matriz2x2 m = new Matriz2x2(r.nextDouble() * 100, 
         ^
Practica1.java:17: cannot find symbol 
symbol : class Matriz2x2 
location: class mx.unam.ciencias.icc.Practica1 
     Matriz2x2 n = new Matriz2x2(r.nextDouble() * 100, 
     ^
Practica1.java:17: cannot find symbol 
symbol : class Matriz2x2 
location: class mx.unam.ciencias.icc.Practica1 
     Matriz2x2 n = new Matriz2x2(r.nextDouble() * 100, 
         ^
Practica1.java:37: cannot find symbol 
symbol : class Matriz2x2 
location: class mx.unam.ciencias.icc.Practica1 
     Matriz2x2 i = m.inversa(); 
     ^
Practica1.java:43: cannot find symbol 
symbol : class Matriz2x2 
location: class mx.unam.ciencias.icc.Practica1 
      Matriz2x2 id = m.multiplica(i); 
      ^
6 errors 

正如你可以看到有關於我沒有在Matriz2包括方法的其他錯誤X2的樣本,但我沒有,因爲他們都是大約相同的問題,它只是找不到Matriz2x2類。 它可能很簡單,但我只是沒有看到他們可能寫在代碼中的任何錯誤(除了老師寫的),所以我不明白爲什麼主類不編譯,一切似乎都是正確的。

+0

是否這兩個類都已編譯並存在於類路徑中 –

+0

您是使用eclipse還是其他IDE?嘗試重新加載項目。 – guisantogui

回答

4

您需要從源層次結構的根目錄調用javac

所以做到這一點:

cd ~/practica1/src 
javac mx/unam/ciencias/icc/Practica1.java 

這樣,編譯器知道到哪裏尋找的Matriz2x2.java文件。

Java要求目錄結構反映包名稱。因此,由於這些類位於mx.unam.ciencias.icc包中,編譯器期望它們位於當前目錄的mx/unam/ciencias/icc子目錄中。但是通過將當前目錄設置爲子目錄,會讓編譯器感到困惑。

更好的解決方案是編寫構建腳本(Ant)或使用IDE。

+0

謝謝。我會投票,但我沒有代表。 –

+0

@JoséCasillas:代之以接受答案! –

+0

您可以接受答案作爲解決方案。 –

1

在嘗試編譯Practical類之前,請確保先編譯了您的Matriz2x2類。