首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在子目录中运行Java程序

在子目录中运行Java程序
EN

Stack Overflow用户
提问于 2011-05-10 08:23:34
回答 3查看 3.6K关注 0票数 1

如果我的格式有误,请给我建议,这是我第一次在这里发帖。使用UNIX时,我在从顶级目录运行Java程序'Master‘(位于子目录中)时遇到了问题。从顶层编译可以很好地工作,但是我不能真正从顶层运行java代码。我想我可能误解了类路径/类路径标志。我的目录结构是这样的: /top-level/src/amsPassageretriever。

当我尝试从顶级目录运行所有内容时,我得到以下错误:

代码语言:javascript
复制
user:~/top-level$ javac -classpath :/NLP_TOOLS/info_retrieval/lucene/latest/lucene-core-3.1.0.jar:/NLP_TOOLS/info_retrieval/lucene/latest/contrib/demo/lucene-demo-3.1.0.jar:/NLP_TOOLS/info_retrieval/lucene/latest/contrib/wordnet/lucene-wordnet-3.1.0.jar:/NLP_TOOLS/info_retrieval/lemur/latest/share/indri/indri.jar src/amsPassageretriever/*.java
user:~/top-level$ java -classpath :/NLP_TOOLS/info_retrieval/lucene/latest/lucene-core-3.1.0.jar:/NLP_TOOLS/info_retrieval/lucene/latest/contrib/demo/lucene-demo-3.1.0.jar:/NLP_TOOLS/info_retrieval/lucene/latest/contrib/wordnet/lucene-wordnet-3.1.0.jar:/NLP_TOOLS/info_retrieval/lemur/latest/share/indri/indri.jar src/amsPassageretriever/Master
Exception in thread "main" java.lang.NoClassDefFoundError: src/amsPassageretriever/Master (wrong name: amsPassageretriever/Master)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: src/amsPassageretriever/Master.  Program will exit.
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-10 08:47:09

java的参数不是文件,它是类路径(您想要执行的主类)中的类的完全限定类名。

听起来你想要的类是amsPassageretriever.Master (我假设你在文章的末尾输入了一个叫做amsPassageretrieve的包)。

因此,您应该调用:

代码语言:javascript
复制
java -classpath :/NLP_TOOLS/info_retrieval/lucene/latest/lucene-core-3.1.0.jar:/NLP_TOOLS/info_retrieval/lucene/latest/contrib/demo/lucene-demo-3.1.0.jar:/NLP_TOOLS/info_retrieval/lucene/latest/contrib/wordnet/lucene-wordnet-3.1.0.jar:/NLP_TOOLS/info_retrieval/lemur/latest/share/indri/indri.jar amsPassageretriever.Master

更新:如果你想让它在你不在src中时正常运行,那么你也需要将该目录添加到你的类路径中:

代码语言:javascript
复制
java -classpath /home/user/top-level/src:/NLP_TOOLS/info_retrieval/lucene/latest/lucene-core-3.1.0.jar:/NLP_TOOLS/info_retrieval/lucene/latest/contrib/demo/lucene-demo-3.1.0.jar:/NLP_TOOLS/info_retrieval/lucene/latest/contrib/wordnet/lucene-wordnet-3.1.0.jar:/NLP_TOOLS/info_retrieval/lemur/latest/share/indri/indri.jar amsPassageretriever.Master
票数 1
EN

Stack Overflow用户

发布于 2011-05-10 08:35:31

尝试使用java amsPassageretrieve.Master,因为据我所知,amsPassageretrieve是软件包

如果您的类需要,则可能还需要添加类路径变量

票数 0
EN

Stack Overflow用户

发布于 2011-05-10 08:37:31

您键入的是"retrieve“和"retriever”,这是两个不同的单词

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5943879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档