运行时未找到Java类错误

运行时未找到Java类错误,java,eclipse,jakarta-ee,Java,Eclipse,Jakarta Ee,我有一个类,我相信它在引用外部库文件时存在一些依赖性问题。每次我尝试在服务器上运行这个时,都会收到错误消息,说找不到类。例如: 严重:未找到类[org/json/JSONException]。加载[class com.myproj.logic.Driver]时出错 这会阻止类执行。我尝试通过只说throws exception来删除特定的throws execption,并得到以下错误: 警告:调用EJB驱动程序方法public void com..logic.Driver.initURL抛出j

我有一个类,我相信它在引用外部库文件时存在一些依赖性问题。每次我尝试在服务器上运行这个时,都会收到错误消息,说找不到类。例如:

严重:未找到类[org/json/JSONException]。加载[class com.myproj.logic.Driver]时出错

这会阻止类执行。我尝试通过只说throws exception来删除特定的throws execption,并得到以下错误:

警告:调用EJB驱动程序方法public void com..logic.Driver.initURL抛出java.lang.exception时发生系统异常 javax.ejb.EJBException:javax.ejb.CreateException:单例驱动程序初始化失败

原因:java.lang.ClassNotFoundException:org.apache.commons.io.IOUtils

我编辑了Java类路径,为每个类添加了一个用户库,并编辑了项目的构建路径。这些库显示在列表中,我没有发现编译器错误,所以至少Eclipse已经识别出这些库。问题是在执行过程中出现的,所以我认为那里出了问题


我是否应该在Windows>Preferences>Java>classpath>中编辑类路径并在那里添加JAR?我以前没有为任何其他图书馆做过这件事

我发现您必须在Glassfish/domain/lib目录中添加任何库文件,才能被服务器上的Glassfish识别

编译和执行类路径是不同的。如何启动应用程序?缺少的库是否列在yout运行时类路径中?我正在glassfish 3.1中运行它。我认为我的构建路径很好,一定是类路径。我怎样才能确认他们在那里?如果我转到windows>preferences>Java>build path>class path>,那里只有JRE库文件。我认为您应该将包含丢失的com.myproj.logic.Driver类的jar添加到您的webapp的WEB-INF/lib目录中,以便在运行时使用和找到它。或者,如果它不是jar而是单个类,则将其添加到WEB-INF/classes目录。在这两种情况下,都需要重新部署应用程序并使用添加的新jar或类进行测试。当然,不需要。Java webapp的所有运行时依赖项,无论部署在哪台服务器上,都必须放在WEB-INF/lib目录的jar中,或者作为简单类放在WEB-INF/classes目录中。这个运行时类路径与您在IDE中设置的构建路径无关。如果是这样的话,我建议将完整的Library jar放在运行时类路径中,而不仅仅是missong org.json.JSONException类。我不想回答我自己的问题,但这并不是基于我使用的关键字。或者,就像我的例子/WEB-INF/lib/needs弃置.jar一样
@Singleton
public class Driver {

@EJB RSSbean rssbean;    

@PostConstruct
@Schedule(hour ="*/1", minute ="*/1", second ="*/1", persistent = false)
public void initURL() throws IOException, JSONException{

    URL twitterSource = new URL("http://search.twitter.com/search.json?q=news");
    ByteArrayOutputStream urlOutputStream = new ByteArrayOutputStream();

                IOUtils.copy(twitterSource.openStream(), urlOutputStream);
                String urlContents = urlOutputStream.toString();
                JSONObject thisobject = new JSONObject(urlContents);
                JSONArray names = thisobject.names();
                JSONArray asArray = thisobject.toJSONArray(names);
                JSONArray resultsArray = thisobject.getJSONArray("results");

           JSONObject jsonObject = resultsArray.getJSONObject(0);

            String twitterText = jsonObject.getString("text");

            //System.out.println(twitterText);
            System.out.println("Calling rssbean from Driver");
            rssbean.updateDatabase("twitterText");

}
}