2014-01-14 72 views
1

我有一个小项目(留言,在java appengine文档中的谷歌示例)。 https://developers.google.com/appengine/docs/java/gettingstarted/creating 在这个小项目中,当我想逐步执行调试(F5)时,我遇到了一个问题。进入步骤不起作用,我在eclipse中找到一条消息“source not found”,并带有一个按钮“编辑源查找路径”。在eclipse中调试:未找到源

它似乎问题是已知的,因为我发现堆栈溢出类似的帖子,但我没有找到解决方案,我的情况和解决方案有时是完全不同的(好的,我保持开放的态度)。如果我阅读这篇文章,看起来类路径有问题。

在这篇文章中(我发现的最完整的主题)有很多东西,我测试。 Eclipse java debugging: source not found

例如,我已在首选项> Java的改变definiton>安装JRE 却是同样的结果... 我试图在此窗口中创建一个新的调试配置也和许多其他的事情。 我需要帮助来理解和配置Eclipse,希望没有打破所有我的eclipse安装与我不同的测试...今晚我已经决定安装新鲜的eclipse的副本...但相同的结果....

我有下面的conf ... 日食keepler 1个 谷歌Eclipse插件3.5.1 AppEngine上的Java-SDK-1.8.8

感谢由您的帮助

编辑15.01 .2014

cod e几乎与google代码一样。 在调试模式下,透视图打开时,我得到http://localhost:8888/guestbook,断点突出显示,如果我按F5,我得到错误消息“找不到源”按钮。

package com.example.Guestbook; 
import java.io.IOException; 
import javax.servlet.http.*; 

public class GuestbookServlet extends HttpServlet { 

    @Override 
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { 
     resp.setContentType("text/plain"); 
     resp.getWriter().println("Hello, world 1"); 
     resp.getWriter().println("Hello, world 2"); 
     resp.getWriter().println("Hello, world 3"); 

     resp.getWriter().println("breakpoint here " + this.myFunction()); // the breakpoint is here 
    } 


    // this method is not in the original google example 
    public int myFunction(){ 
     int i=10; 
     return i; 
    } 
} 
+0

您是否在询问有关从演示本身或App Engine API代码中加入代码的问题? –

+0

您试图调试的代码的确切代码行是什么? –

+0

这取决于您尝试进入的代码行。通常对于您自己的来源(应用程序项目类/方法),您应该能够步入。但是,如果代码存在于框架类中,那么您很可能会看到该错误。因此,请让我们知道您尝试进入哪一行代码。 – Romin

回答

0

我有时会触发相同的错误,但通常有一种方法可以避免它。 Eclipse中的解决方案是使用F6(Step Over)而不是F5(Step Into)。你的断点可能是在你的项目之外的一个库中调用代码的行,并且它是源不可用的库。您不想进入外部库源代码。

在您的源代码示例中,如果您不能从包含“breakpoint here”的行单步执行,请尝试在包含“int i = 10;”的行上添加一个附加断点。然后按F8(恢复)。

+0

非常感谢您的回答。如果我使用F6(step over)或F5(step into),并在行“int i = 10”上有一个断点,则在执行结束时,当我返回方法doGet时,会得到相同的消息。这个解决方案可能是这个代码的一个很好的解决方案,因为它是一个例子,但是在真实情况下,需要“进入”功能。想象一下,如果你不能在自己的班级中使用“步入”,这是一个问题,不是吗?再次感谢Martin – jerome

+0

杰罗姆我同意你的看法,Eclipse有时应该Step Into,但是不能这样做。我们可以认为它是一个Eclipse错误,我们不知道如何解决。额外的断点和F8技术是一种解决方法,仅仅用于Eclipse不能很好地播放时,并且想要在被调用的方法中单步执行。不方便,但比不工作更好。 –

+0

好吧,我采用这种方法,并感谢您的答案:-) – jerome