Question

I'm new to JADE and am having a bit of trouble loading agents.

I created a new IntelliJ project and added "jade.jar" and "commons-codec-1.3.jar" (I'm using JADE 4.1.1) in "Dependencies" and ticked the export boxes (I've also tried without them ticked). I then added the "HelloWorldAgent.java" that comes in the examples to the src. I set up the run configurations as:

  • Main class: jade.Boot
  • program arguments: -gui testAgent:HelloWorldAgent
  • Use class path of module: jadeCW (my projects name)

When I run using this configuration the JADE guy does start but it does not find the "HelloWorldAgent". The output is:

14-Feb-2012 21:43:08 jade.core.Runtime beginContainer
INFO: ----------------------------------
    This is JADE 4.1.1 - revision 6532 of 2011/11/18 16:21:34
    downloaded in Open Source, under LGPL restrictions,
    at http://jade.tilab.com/
----------------------------------------
Retrieving CommandDispatcher for platform null
14-Feb-2012 21:43:08 jade.imtp.leap.LEAPIMTPManager initialize
INFO: Listening for intra-platform commands on address:
- jicp://192.168.1.66:1099

14-Feb-2012 21:43:08 jade.core.BaseService init
INFO: Service jade.core.management.AgentManagement initialized
14-Feb-2012 21:43:08 jade.core.BaseService init
INFO: Service jade.core.messaging.Messaging initialized
14-Feb-2012 21:43:08 jade.core.BaseService init
INFO: Service jade.core.resource.ResourceManagement initialized
14-Feb-2012 21:43:08 jade.core.BaseService init
INFO: Service jade.core.mobility.AgentMobility initialized
14-Feb-2012 21:43:08 jade.core.BaseService init
INFO: Service jade.core.event.Notification initialized
14-Feb-2012 21:43:08 jade.mtp.http.HTTPServer <init>
INFO: HTTP-MTP Using XML parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
14-Feb-2012 21:43:08 jade.core.messaging.MessagingService boot
INFO: MTP addresses: http://unknown-00-19-c5-7e-cb-4b.home:7778/acc
14-Feb-2012 21:43:08 jade.core.AgentContainerImpl startBootstrapAgents
SEVERE: Cannot create agent testAgent: Class HelloWorldAgent for agent ( agent-identifier :name testAgent@192.168.1.66:1099/JADE ) not found [nested java.lang.ClassNotFoundException: HelloWorldAgent]
14-Feb-2012 21:43:08 jade.core.AgentContainerImpl joinPlatform
INFO: --------------------------------------
Agent container Main-Container@192.168.1.66 is ready.

The key problem clearly being:

SEVERE: Cannot create agent testAgent: Class HelloWorldAgent for agent ( agent-identifier :name testAgent@192.168.1.66:1099/JADE ) not found [nested java.lang.ClassNotFoundException: HelloWorldAgent]

I've tried using eclipse but I get the same problem, I also tried using a earlier version of JADE but again, no luck. Any help would be much appreciated.

Many Thanks

Dan

Was it helpful?

Solution 4

It seems that the location I put the "jade.jar" and "commons-codec-1.3.jar" was the problem (I originally put them in /Library/Java/Extensions (in OSX lion)). I tried removing them, putting them somewhere else and tried again and now it works. Not entirely sure why mind!

OTHER TIPS

You need to pass the fully qualified name of the class when you start it. On my old version of JADE, the HelloWorldAgent is in the examples.hello package. Thus you should specify the program arguments: -gui testAgent:examples.hello.HelloWorldAgent.

Just add the Package Name before the class Name

-gui testAgent:packageName.HelloWorldAgent

You need to add:

-gui nameAgent:packageName.className

In my case it was an extra space after the agent name:

-gui nameAgent: packageName.className

After removing the space and adding the project to the classpath everything worked correctly.

-gui nameAgent:packageName.className

I was facing another problem so I thought I would write the the solution for it here so that it could help someone. While writing the class path with "-cp" or "-classpath", write the path till the output folder name only and dont include the folders created for namespaces. For example, if your agent class is in namespace "sample.namespace" the javac command will create a directory structure like "bin\sample\namespace" and put the files there. In this case don't include "sample\namespace" in the class path. Just the path till "bin" folder the name of the output folder(bin) can be different.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top