jar文件必须在运行时在哪里?我使用netbeans

时间:2015-01-22 20:26:29

标签: java netbeans jar

我正在创建一个使用我下载的jar文件的应用程序,我将jar添加到项目中,转到'project properties'然后转到'library'并在'compile'和'run'下添加jar。当我到达使用此特定库中的函数的程序部分时,我得到一个noclassdeffound错误。如何在运行时找到放置此jar文件的位置?这是堆栈跟踪

[#|2015-01-22T15:39:50.446-0500|WARNING|glassfish3.1.2|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=109;_ThreadName=Thread-2;|StandardWrapperValve[generateScripts]: PWC1406: Servlet.service() for servlet generateScripts threw exception
java.lang.NoClassDefFoundError: org/apache/commons/collections4/BidiMap
    at tsschecks.generateScripts.processRequest(generateScripts.java:94)
    at tsschecks.generateScripts.doPost(generateScripts.java:179)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections4.BidiMap
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1509)
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
    ... 28 more

2 个答案:

答案 0 :(得分:0)

在项目属性中将库添加到项目中。

如果您还没完成,可能需要创建库。

如果您需要进一步的帮助,请参阅此link

答案 1 :(得分:0)

某些jar文件需要其他称为依赖项的jar文件。使用Maven项目将解决这个问题,但如果您只是创建一个java项目并添加了自己的jar文件,那么您需要逐个包含所有这些依赖项。

您可以搜索通过谷歌添加的主jar文件的依赖项。但是,错误消息会报告缺少该类的一些有用信息。复制并搜索引发错误的错误消息或方法名称。

无论如何,如果您想知道lib所在的位置,请先从“窗口”菜单中打开项目资源管理器视图。打开项目并转到Library文件夹。右键单击它并选择属性。项目属性窗口将被打开。选择Libraries然后编译选项卡。这是您所包含的课程的地方。不过,在这里添加更多课程。

通常你的jar文件都在你的项目jar中。要查找,请按F11或运行菜单>建设项目。成功构建后,转到项目所在的位置。再次转到项目属性,这次从左侧列表中选择源。它会告诉你路径。

转到那条路径,转到dist文件夹,会有你的p​​roject.jar,readme.txt和一个lib文件夹,里面有你所有的外部罐子。

运行你的项目,它主要用作编译的字节码,双击你的project.jar文件。