---
title: "cannot resolve symbol"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/130007-cannot-resolve-symbol"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "Gaski"
published: "2005-06-14T21:22:34.000Z"
updated: "2005-06-15T13:23:30.000Z"
replies: 10
views: 534
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/130007-cannot-resolve-symbol"
---

# cannot resolve symbol

## #1 — Gaski, 2005-06-14T21:22Z

Hej,

Jag har lite problem med min kompilator, jag har två olika klasser varav den ena ser ut så här:

```
public class Category {

   private int id;
   private String name;

   public Category() {

   }
  
}
```

Inte så konstig, och den fungerar att kompilera.
Dock när jag har kompilerat ovanstående och skall kompilera:

```
public class Test {

  public Test() {
      Category c = new Category();
  }

}
```

Så får jag svaret: cannot resolve symbol på Category.

Varför? Koden är det inget fel på, eller?

Permalänk: https://www.webforum.nu/p/130007

## #2 — Compusa, 2005-06-14T21:31Z

Re: cannot resolve symbol

Du kan inte ha en lokal variabel i konstruktorn, gör så här istället:

```
public class Test {
 private Category c;

  public Test() {
      c = new Category();
  }

}
```

r/
Om du inte vill ha kategorin som en instansvariabel utan som lokalvariabel så går det naturligtvis att ha den i en metod.

```
public class Test {

  public Test() {
      // Do something
  }

  public void createCategory() {
      Category c = new Category();  
  }    

}
```

Permalänk: https://www.webforum.nu/p/1630717

## #3 — Gaski, 2005-06-14T21:36Z

Får samma fel, den pekar på Category i deklarationen och på Category i konstruktorn

Permalänk: https://www.webforum.nu/p/1630723

## #4 — Compusa, 2005-06-14T21:39Z

Lägg till följande överst i båda klasser:
package test;

Jag testade först din kod i netbeans och modifierade sedan enligt ändringarna jag postade ovan och det fungerade. 

Dubbelkollade och om du gör så att klasserna tillhör samma paket så ska det fungera. Om du kör i netbeans så kan det ibland vara segt med att ta bort felen, rödunderstrykning på syntax men detta försvinner om du kompilerar.

Permalänk: https://www.webforum.nu/p/1630725

## #5 — Gaski, 2005-06-14T21:42Z

Fortfarande samma fel. Tror inte att det är så mycket fel på koden, mer på kompilatorn, använder SDK 1.4.2.

Permalänk: https://www.webforum.nu/p/1630730

## #6 — Lime, 2005-06-15T06:41Z

Hur ser katalogstrukturen ut?

Hur ser javac-kommandot ut?

Ett bra "standardsätt" när man håller på med java-programmering är att dela upp källkod och klasser så att man skapar en katalog som heter *src* och en som heter *bin*.

Exempel:

d:\\Project\\Java\\test1\\src\\
och
d:\\Project\\Java\\test1\\bin\\

under src ska filerna helst ligga i samma struktur som paketstrukturen men det är inte nödvändigt. Det finns dock en poäng med det...

När du sedan kompilerar så ställer du dig i src-katalogen och skriver:

d:\\Project\\Java\\test1\\src\\ \>\> javac -classpath . -d .\\bin \*.java

Permalänk: https://www.webforum.nu/p/1630786

## #7 — Gaski, 2005-06-15T08:59Z

Det ger tyvärr fortfarande samma felmeddelande.  :(

Permalänk: https://www.webforum.nu/p/1630824

## #8 — Compusa, 2005-06-15T09:21Z

Vilken programvara programmerar du med?

Permalänk: https://www.webforum.nu/p/1630838

## #9 — Aleph_One, 2005-06-15T09:33Z

Jodå visst kan man deklarera variabler lokalt i konstruktorn.

Finns flera olika varianter om du ska köra från terminal.

Om du vill kompilera alla filer i aktuell katalog kör

```
javac *.java
```

Om du vill ta en fil i taget skriv

```
javac -classpath . Category.java
javac -classpath . Test.java
```

Och glöm inte att du måste ha med en main metod sen i nån av klasserna för att kunna köra det.

Permalänk: https://www.webforum.nu/p/1630840

## #10 — Gaski, 2005-06-15T09:42Z

Hmmm, om jag tar bort raden package test; så fungerar det...
Men jag måste ju ha med det eftersom det i slutändan ska bli en bean. 

Varför fungerar det inte med raden package test; ?

Permalänk: https://www.webforum.nu/p/1630844

## #11 — Lime, 2005-06-15T13:23Z

Okej... då var vi inne på en klassiker... nämeligen vad klasser egentligen heter.

Antar att Category.java ser ut såhär:

```
package test;

public class Category {

   private int id;
   private String name;

   public Category() {

   }
  
}
```

Det betyder att klassen EGENTLIGEN heter test.Category.

Om du ska änvända den i klassen Test måste du antingen kalla den för dess fulla namn eller säga till i klassen test att den även skall använda klasser i namnrymden 'test' som klassen Category ligger i.

Det gör man antingen såhär:

```
public class Test {

  public Test() {
      // Do something
  }

  public void createCategory() {
      [b]test.Category[/b] c = new [b]test.Category()[/b];  
  }    

}
```

eller såhär

```

[b]import test.Category;[/b]

public class Test {

  public Test() {
      // Do something
  }

  public void createCategory() {
       Category c = new Category();  
  }    

}
```

Permalänk: https://www.webforum.nu/p/1630907

---

Tråden på webben: https://www.webforum.nu/amne/java/130007-cannot-resolve-symbol
