我是JADE的新手,加载代理商时遇到了一些麻烦。
我创建了一个新的IntelliJ项目并在“Dependencies”中添加了“jade.jar”和“commons-codec-1.3.jar”(我正在使用JADE 4.1.1)并勾选了导出框(我也是尝试没有他们勾选)。然后我将示例中的“HelloWorldAgent.java”添加到src中。我将运行配置设置为:
当我使用这个配置运行时,JADE的人确实启动了,但它找不到“HelloWorldAgent”。输出是:
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.
关键问题显然是:
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]
我尝试过使用eclipse,但是我遇到了同样的问题,我也试过使用早期版本的JADE但是再次没有运气。任何帮助将不胜感激。
非常感谢
丹
答案 0 :(得分:6)
启动时需要传递类的完全限定名称。在我的旧版JADE上,HelloWorldAgent
位于examples.hello
包中。因此,您应该指定程序参数:-gui testAgent:examples.hello.HelloWorldAgent
。
答案 1 :(得分:3)
只需在类名
之前添加包名称-gui testAgent:packageName.HelloWorldAgent
答案 2 :(得分:1)
您需要添加:
-gui nameAgent:packageName.className
答案 3 :(得分:0)
似乎我放置“jade.jar”和“commons-codec-1.3.jar”的位置是问题(我最初将它们放在/ Library / Java / Extensions(在OSX lion中))。我尝试删除它们,将它们放在其他地方并再次尝试,现在它可以工作了。不完全确定为什么介意!
答案 4 :(得分:0)
在我的情况下,座席名称后面有一个多余的空格:
-gui nameAgent: packageName.className
在删除空间并将项目添加到类路径后,一切正常。
-gui nameAgent:packageName.className
答案 5 :(得分:0)
我遇到了另一个问题,所以我想在这里写下解决方案,以便对他人有所帮助。 在使用“ -cp”或“ -classpath”编写类路径时,将路径写到仅输出文件夹名称,并且不要包括为名称空间创建的文件夹。例如,如果您的代理类位于名称空间“ sample.namespace”中,则javac命令将创建一个类似于“ bin \ sample \ namespace”的目录结构,并将文件放在此处。在这种情况下,不要在类路径中包括“ sample \ namespace”。只是直到“ bin”文件夹的路径,输出文件夹(bin)的名称可以不同。