Törmäsin tässä seuraavanlaiseen ongelmaan, toivottavasti joku osaa kerto missä vika.
Käytän Apache Tomcat 5.0 -serveriä freeBSD:n päällä ja tehnyt muutamia servlettejä. Ongelma on se, että jos teen servletin jonka sisällä luodaan olio niin kääntö vaiheessa servletti antaa virhe ilmoituksen olion luomisesta.
Eli yksistään tämän servletin kääntäminen antaa virheen, mutta jos käännän kaikki java-tiedostot kerralla, virhettä ei tule.
Ei ongelma sinänsä, mutten näe järkeä kääntää koko hakemistoa kerralla.Miksi kääntäjä ei osaa huomioida oikein olion luontia...
Käytän Apache Tomcat 5.0 -serveriä freeBSD:n päällä ja tehnyt muutamia servlettejä. Ongelma on se, että jos teen servletin jonka sisällä luodaan olio niin kääntö vaiheessa servletti antaa virhe ilmoituksen olion luomisesta.
Eli yksistään tämän servletin kääntäminen antaa virheen, mutta jos käännän kaikki java-tiedostot kerralla, virhettä ei tule.
Ei ongelma sinänsä, mutten näe järkeä kääntää koko hakemistoa kerralla.Miksi kääntäjä ei osaa huomioida oikein olion luontia...
Vastaukset 5
Vanhimmat
jos vaan hakemistosta löytyy olio.class
Pistäs se herja tänne
javac TopFiveServlet.java
TopFiveServlet.java:11: cannot resolve symbol
symbol : class TopFive
location: class games.TopFiveServlet
TopFive top = new TopFive();
^
TopFiveServlet.java:11: cannot resolve symbol
symbol : class TopFive
location: class games.TopFiveServlet
TopFive top = new TopFive();
Käännettäessä koko hakemisto: javac *.java virheitä ei tule. TopFive.class tiedosto kyllä löytyy. Onko olion luomisessa tai import/package määrityksistä apua?
TopFive top = new TopFiVe();
Eikö se näin mene?
Onko konstruktori pakollinen? Onko sillä vaikutusta?
Entä luokan puclic-määritys?
En ole aikoihin kääntänyt noin ohjelmia, mutta muistaakseni jos on määritetty package, niin pitää olla toi classpath määritetty.
Eli levyllä:
~/src/test/Test.java
~/src/test/Test2.java
Test.java:
import test.Test2
=> javac -classpath ~/src Test.java
Kandee käyttää jotain projekti työkalua. maven on hyvä. ant toinen ei niin hyvä kuin maven.
javac
Jos haluat instanssin luokasta, on konstruktori pakollinen.
Jos esittelet muuttujan metodin sisällä, pitää sille aina määrittää toi toinen osa..
TopFive tf = null;
TopFive tf = new TopFife();
Jos haluat käyttää vain luokan metodeja (static)
TopFive.test();
Jos muuttuja on luokan ominaisuus niin kääntäjä alustaa sen automaattisesti.
public TopFive {
Test test; // saa arvon null
Test test2 = null; // null
int n; // 0
double ttt; // 0.0
}
voit myös tehdä näin, ei tarvii importata.
test.Test test = new test.Test();
Luokan public määrittelee että luokkaa voidaan käyttää paketin ulkopuolella.
test.Test(); // public
test2.Foo(); // import test.Test()
test.Test(); // ei public
test2.Foo(); // import test.Test() ei sallittu
test.Bar(); // import Test(). sallittu