webForumDet fria alternativet

Kompilera på unix-maskin

3 svar · 350 visningar · startad av Gein

GeinMedlem sedan sep. 20005 700 inlägg
#1

Jag har en applikation som fungerar utmärkt i Windows men när jag ska flytta den till unix och kompilera så lyckas jag inte. Vet inte riktigt om jag gör rätt.
Jag har två paket: simulation och pasture (pasture använder klasser i simulation)

Nu ligger java-filerna i /java/simulation/ respektive /java/pasture/
Försöker jag köra (från /java/-mappen)
javac -g -verbose -sourcepath ./simulation/*.java ./pasture/*.java
så får jag ett gäng fel. Paketet simulation går igenom fint men i pasture får jag massor av fel. T.ex:

./pasture/Wolf.java:239: cannot resolve symbol
symbol : variable position
location: class pasture.Wolf
if(!isPositionLegal(hostSystem, this.position)) {

position är en variabel som är definierad i en klass som Wolf (till slut) ärver ifrån men som ligger i simulation. Alla fel jag ser verkar bero på samma grej. Kompilatorn hittar inte metoder/variabler som en klass har som är definierade i en arvsklass från simulation.

Jag har provat att sätta CLASSPATH till de två paket-katalogerna utan framgång. Hur ska jag kompilera?

GeinMedlem sedan sep. 20005 700 inlägg
#2

Okej, jag skulle visst sätta classpath till katalogen före paketen, dvs /java/. Nu kan jag iaf kompilera.
När jag försöker starta programmet (java -classpath ../ PastureSimulation.class) så får jag följande fel:

Exception in thread "main" java.lang.NoClassDefFoundError: PastureSimulation/class

Jag har sökt lite och hittar

Thrown if the Java Virtual Machine or a classloader tries to load in the definition of a class (as part of a normal method call or as part of creating a new instance using the new expression) and no definition of the class could be found.

Kan felet bero på att jag försöker starta genom SSH (från Windows. Sitter inte på samma dator) och att applikationen vill öppna fönster och härja?
Eller är det fel i klassökvägar igen?

spangoMedlem sedan juni 20008 205 inlägg
#3

Re: Kompilera på unix-maskin

Gein skrev:

java -classpath ../ PastureSimulation.class

Du ska ju inte ha med filändelsen, bara det kvalificerade klassnamnet. Så det ska väl typ vara java -classpath /java simulation.PastureSimulation

GeinMedlem sedan sep. 20005 700 inlägg
#4

Tack, spango! Du är en pärla ;)
Det fungerar fika nu!
Det som löste biffen för att vara exakt:

java -classpath ./ pasture/PastureSimulation

131 ms totalt · 3 externa anrop · v20260731065814-full.37765c92
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)