Kompelieren von 2 Java Dateien im selben Ordner

Paddel

Bekanntes Mitglied
Hallo, ich habe 2 Java Dateien im selben Ordner "test fw"

Einmal die Klasse: Aktion
Java:
public class Aktion implements Serializable{
	int id=99;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
}
und die Klasse Agent_A.java will darauf zugreifen. Wenn ich aber mit:"javac Agent_A.java kompeliere geht das nicht weil er nicht weiss was die Klasse Agent ist. Die sind im selben Ordner und selben Package? Wie kann ich ihm das mitteilen das die Klasse im sleben Ordner ist?
Gruß
 
Wie kompilierst du denn? Mal
Code:
javac *.java
oder
Code:
 javac -cp . Agent_A.java
probiert? Wenn das geht, liegt`s definitiv am Classpath 🙂
 
Zuletzt bearbeitet:
ist egal womit geht alles nicht. Also die jdk is im Classpath und einzelne java Dateien kann ich auch durchjagen nur sobald die in Bezug auf andere Java Dateien im selben Ordner sind... Meine Frage ist eher wie muss das konstruiert sein das er das checkt das Agent ne einzelne Java Klasse die im selben Ornder ist ist bzw. in einer anderen Klasse steht die auch im selben Ordner ist
 
Zuletzt bearbeitet:
Wie heißt dein Klasse? Agent_A? Oder Agent?
Wie heißt die Datei? Agent_A.java oder Agent.java?
 
zu kompelierende Datei
Aktion.java
javac Aktion.java

Agent_A benutzt Instanz von Aktion
mit:
Java:
 try {
					Aktion akt = (Aktion) msg.getContentObject();
javac Agent_A.java
funktioniert!


Aktion komplett:
Java:
package test_fw22;

import jade.util.leap.Serializable;

public class Aktion implements Serializable{
	int id=99;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
}

Agent_Agent.java komplett, funktioniert nicht. Findet Agent nicht
Java:
package test_fw22;


import java.io.Serializable;

import jade.core.Agent;
import jade.core.behaviours.OneShotBehaviour;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.UnreadableException;

public class Agent_agent extends Agent{
	@Override
	  protected void setup() 
    { 
        System.out.println("Hello World. ");
        System.out.println("My name is "+ getLocalName()); 
    }

	
	class recieve_message extends OneShotBehaviour{

		@Override
		public void action() {
			   ACLMessage msg = receive();
		         if (msg == null) { block(); return; }
		         try {
					Aktion akt = (Aktion) msg.getContentObject();
					System.out.println("Zahl ist: " + akt.getId());
				} catch (UnreadableException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
		}
		
	}
}
 
Frage 1: Rufst du "javac" auch in dem Ordner "test fw" auf?

Frage 2: Wie sieht denn Agent_A.java aus?

Edit: Was wird jetzt nicht gefunden deine Klasse "Aktion" oder die Klasse "Agent"?
 
Zuletzt bearbeitet von einem Moderator:
Ich wette du hast Klassen, Datei und Instanznamen durcheinander gemixt. Poste doch bitte mal die Fehlermeldung von dem Compiler und welche Dateien in deinem Ordner liegen.
 
In dem Ordner sind:Aktion.java wie auch das kompelierte Aktion.class
[Java]package test_fw22;

import jade.util.leap.Serializable;

public class Aktion implements Serializable{
int id=99;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}
}
[/code]
Ausserdem Agent_A.java
Java:
package test_fw22;
import test_fw22.*;
  import jade.core.Agent;
import jade.core.behaviours.OneShotBehaviour;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.UnreadableException;

  public class Agent_A extends Agent 
  { 
      protected void setup() 
      { 
          System.out.println("Hello World. ");
          System.out.println("My name is "+ getLocalName()); 
      }
  	class recieve_message extends OneShotBehaviour{

		@Override
		public void action() {
			   ACLMessage msg = receive();
		         if (msg == null) { block(); return; }
		         try {
					Aktion akt = (Aktion) msg.getContentObject();
					System.out.println("Zahl ist: " + akt.getId());
				} catch (UnreadableException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
		}
		
	}
}
wenn ich das mit javac Agent_A.java kompelieren möchte kommt:

Agent_A.java:22: cannot find symbol
symbol : class Aktion
location: class test_fw22.Agent_A.recieve_message
Aktion akt = (Aktion) msg.getContentObject();
^
Agent_A.java:22: cannot find symbol
symbol : class Aktion
location: class test_fw22.Agent_A.recieve_message
Aktion akt = (Aktion) msg.getContentObject();
^
2 errors


Beide sind aber in dem selbem Ordner. Und Aktion.java lässt sich auch kompelieren
 
ich bin zwar komplett verwirrt wie nun die Klassen heißen, in welchen Dateien sie nun liegen.

wenn du aber sie im package foo hast, also im Ordner foo, dann kompiliert man nicht im Ordner foo, sondern immer von der Root aus.
 

Zurück
Oben