Java GWT webappcreator正在创建Maven项目:源附件不包含文件URLClassPath.class的源

Java GWT webappcreator正在创建Maven项目:源附件不包含文件URLClassPath.class的源,java,eclipse,maven-2,gwt,maven,Java,Eclipse,Maven 2,Gwt,Maven,我创建了一个基于Maven2的GWT应用程序,并将其导入Eclipse,当我作为GWT Web应用程序进行调试时,Eclipse调试会话将挂起,并出现FileNotFoundException。它显示一个窗口,说明:源附件不包含文件URLClassPath.class的源 我已经完全删除了Eclipse工作区(和.metadata子目录),创建/导入了一个空白项目,同样的事情也发生了。如果我以GWT Web应用程序的身份运行,它工作正常(有几个警告)。我需要调整什么才能使它在调试模式下工作 重现

我创建了一个基于Maven2的GWT应用程序,并将其导入Eclipse,当我作为GWT Web应用程序进行调试时,Eclipse调试会话将挂起,并出现FileNotFoundException。它显示一个窗口,说明:源附件不包含文件URLClassPath.class的源

我已经完全删除了Eclipse工作区(和.metadata子目录),创建/导入了一个空白项目,同样的事情也发生了。如果我以GWT Web应用程序的身份运行,它工作正常(有几个警告)。我需要调整什么才能使它在调试模式下工作

重现问题的步骤 1)创建应用程序

webAppCreator-noant-maven-XnoEclipse-out MyApp com.example.MyApp

2)导入和更改设置

  • 将应用程序导入Eclipse工作区,在设置中勾选“使用Google Web Toolkit”复选框

  • 选中“此项目具有WAR目录”。WAR目录设置为src/main/webapp。未选中“从此目录启动和部署”

3)调试为

现在,按下调试工具栏按钮,选择“GWT Web应用程序”,并选择target/www作为WAR目录。你应该看到同样的问题。“调试”窗格中的调用堆栈包含以下内容:

MyApp.html[Web应用程序]
com.google.gwt.dev.DevMode位于 本地主机:51620线程[主] (暂停)(例外) FileNotFoundException))
URLClassPath$JarLoader.getJarFile(URL) 行:644
URLClassPath$JarLoader.access$600(URLClassPath$JarLoader, URL)行:540
URLClassPath$JarLoader$1.run()行: 607
AccessController.doPrivileged(PrivilegedExceptionAction) 行:不可用[本机方法]
URLClassPath$JarLoader.ensureOpen() 行:599
URLClassPath$JarLoader。(URL, URLStreamHandler, HashMap)行:583
URLClassPath$JarLoader$3.run()行: 810
AccessController.doPrivileged(PrivilegedExceptionAction) 行:不可用[本机方法]
URLClassPath$JarLoader.getResource(字符串, 布尔值,设置)行:806
URLClassPath$JarLoader.getResource(字符串, 布尔值)行:765
URLClassPath.getResource(字符串, 布尔值)行:169
URLClassLoader$1.run()行:194
AccessController.doPrivileged(PrivilegedExceptionAction, AccessControlContext)行:不是 可用[本机方法]
启动器$AppClassLoader(URLClassLoader).findClass(字符串) 行:190
启动器$AppClassLoader(ClassLoader).loadClass(字符串, 布尔值)行:307
启动器$AppClassLoader.loadClass(字符串, 布尔值)行:301
启动器$AppClassLoader(ClassLoader).loadClass(字符串) 行:248C:\程序 Files\Java\jdk1.6.0\u 21\bin\javaw.exe (2010年11月28日15:28:32)

版本和插件 吕震中本:2.1

日食:太阳神(3.6)

马文:2.2.1

JRE/JDK:jdk1.6.0.21

Eclipse3.6版本1.4.0.v201010280102的谷歌插件


Maven Integration for Eclipse(m2eclipse)版本0.10.2.20100623-1649(已配置为指向Maven 2.2.1环境,而不是使用嵌入的Maven3“实例”)。

在Eclipse中转到窗口->首选项->Java->调试并禁用所有挂起执行选项


由于此错误可能不是由您的应用程序引起的,因此您实际上不需要该类的源代码(URLClassPath)。您可以在Oracle/Sun的Java站点上搜索源代码,并将Eclipse指向这些源代码,如果您真的愿意;)

您是否配置了M2eclipse以下载所有工件的源代码?我没有这样做,但现在已经这样做了。如果我单击“在未捕获的异常上暂停执行”,那么它确实不会在调试启动时打扰我。我将把这个标记为已接受的答案。我很想确切地知道为什么会发生这些异常,以及为什么它们不会出现在非Maven GWT项目中,但我会作为一件单独的事情来做……下载Java源代码(例如),解包并将Eclipse指向它们。让我看看arg0/path,它是“/home/fuepi/.m2/repository/com/google/gwt/gwtservlet/2.1.0/gwtservlet.jar”。毫无疑问,真正的文件名是“gwt-servlet-2.1.0.jar”。所以我做了“ln-s gwt-servlet-2.1.0.jar gwt servlet.jar”,现在调试器运行正常:)通过调整pom.xml来解决这个问题会更好,但是现在这个解决方法对我来说很有用。我按照你说的做了,因为我的arg0/路径是“/C:/M2Repository/com/google/gwt/gwt servlet/2.1.0/gwt servlet.jar”。将gwt-servlet-2.1.0.jar复制到gwt-servlet.jar之后,它也可以在这里工作。很高兴了解更多关于这方面的信息,谢谢!我想知道为什么它要寻找gwt-servlet.jar?在ProjectExplorer下,Maven依赖项与带有版本号的JAR相关。我已经删除了项目和GWT SDK之间的链接。再次感谢您的帮助。我还想知道为什么即使安装了JDK源代码,也很难检查变量。您可以看到函数的参数,但看不到有趣的局部变量。很抱歉,我有这么多问题,我可能应该提出这些关于StackOverflow的不同问题。为那些有相同问题的人提供一些额外信息:关于这一点,有一份GWT问题报告,它确切地解释了发生这种情况的原因:参见