Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Launching visualBuilder: cannot find javac.exe

    Be sure your post includes:

    I've just downloaded smartgwtee-2.3 and am running the gae-ds sample with GAE 1.3.6 and GWT 2.0.4 in Eclipse. The sample is running perfectly. I added:

    Code:
            IButton vbButton = new IButton("VisualBuilder");
            vbButton.addClickHandler(new ClickHandler() {
                public void onClick(ClickEvent event) {
                    com.smartgwtee.tools.client.SCEE.openVisualBuilder();
                }
            }); 
            vbButton.draw();
    to onModuleLoad() to try to get access to visualBuilder.

    I get the output below in Firefox, and the console reads similarly. What do I need to configure so that the devmode server can find javac?

    Thanks,

    Riley

    HTTP ERROR 500

    Problem accessing /GAEDS_js/tools/visualBuilder/index.jsp. Reason:

    Error running javac.exe compiler

    Caused by:

    Error running javac.exe compiler
    at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.java:509)
    at org.apache.tools.ant.taskdefs.compilers.JavacExternal.execute(JavacExternal.java:61)
    at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1065)
    at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:882)
    at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:382)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23)
    at com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
    Caused by: java.io.IOException: Cannot run program "javac.exe": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec(Execute.java:832)
    at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:447)
    at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:461)
    at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.java:506)
    ... 41 more
    Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 51 more
    --- Nested Exception ---
    java.io.IOException: Cannot run program "javac.exe": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec(Execute.java:832)
    at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:447)
    at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:461)
    at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.java:506)
    at org.apache.tools.ant.taskdefs.compilers.JavacExternal.execute(JavacExternal.java:61)
    at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1065)
    at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:882)
    at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:382)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23)
    at com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
    Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 51 more

    Caused by:

    java.io.IOException: Cannot run program "javac.exe": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec(Execute.java:832)
    at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:447)
    at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:461)
    at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.java:506)
    at org.apache.tools.ant.taskdefs.compilers.JavacExternal.execute(JavacExternal.java:61)
    at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1065)
    at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:882)
    at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:382)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23)
    at com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
    Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 51 more

    Caused by:

    java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec(Execute.java:832)
    at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:447)
    at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:461)
    at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.java:506)
    at org.apache.tools.ant.taskdefs.compilers.JavacExternal.execute(JavacExternal.java:61)
    at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1065)
    at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:882)
    at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:382)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23)
    at com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

    #2
    I've tried again with the Showcase sample, with the same results. Do I need javac in the war directory or something?

    Comment


      #3
      Hi,

      Just added your code to sample and it worked. Here is a complete GAEDSEntryPoint.java:
      Code:
      package com.smartgwt.sample.client;
      
      import com.google.gwt.core.client.EntryPoint;
      import com.smartgwt.client.core.KeyIdentifier;
      import com.smartgwt.client.data.DataSource;
      import com.smartgwt.client.rpc.RPCCallback;
      import com.smartgwt.client.rpc.RPCManager;
      import com.smartgwt.client.rpc.RPCRequest;
      import com.smartgwt.client.rpc.RPCResponse;
      import com.smartgwt.client.types.ListGridEditEvent;
      import com.smartgwt.client.util.KeyCallback;
      import com.smartgwt.client.util.Page;
      import com.smartgwt.client.util.SC;
      import com.smartgwt.client.widgets.IButton;
      import com.smartgwt.client.widgets.events.ClickEvent;
      import com.smartgwt.client.widgets.events.ClickHandler;
      import com.smartgwt.client.widgets.grid.ListGrid;
      import com.smartgwt.client.widgets.grid.ListGridField;
      import com.smartgwt.client.widgets.grid.ListGridRecord;
      import com.smartgwt.client.widgets.grid.events.EditorEnterEvent;
      import com.smartgwt.client.widgets.grid.events.EditorEnterHandler;
      import com.smartgwt.client.widgets.grid.events.SelectionChangedHandler;
      import com.smartgwt.client.widgets.grid.events.SelectionEvent;
      import com.smartgwt.client.widgets.layout.VStack;
      
      public class GAEDSEntryPoint implements EntryPoint {
      
          /**
           * Creates a new instance of GAEDSEntryPoint
           */
          public GAEDSEntryPoint() {
          }
      
          /**
           * The entry point method, called automatically by loading a module
           * that declares an implementing class as an entry-point
           */
          public void onModuleLoad() {
      		KeyIdentifier debugKey = new KeyIdentifier();
      		debugKey.setCtrlKey(true);
      		debugKey.setKeyName("D");
      
      		Page.registerKey(debugKey, new KeyCallback() {
      			public void execute(String keyName) {
      				SC.showConsole();
      			}
      		});
      
              VStack vStack = new VStack();
              vStack.setLeft(175);
              vStack.setTop(75);
              vStack.setWidth("70%");
              vStack.setMembersMargin(20);
      
              final DataSource countryDS = DataSource.get("country_DataSource");
      
              final ListGrid countryGrid = new ListGrid();
              countryGrid.setWidth(700);
              countryGrid.setHeight(224);
              countryGrid.setAlternateRecordStyles(true);
              countryGrid.setDataSource(countryDS);
              countryGrid.setAutoFetchData(true);
              countryGrid.setShowFilterEditor(true);
              countryGrid.setCanEdit(true);
              countryGrid.setEditEvent(ListGridEditEvent.CLICK);
              countryGrid.setCanRemoveRecords(true);
      
              ListGridField countryCode = new ListGridField("countryCode", "Code", 50);
              ListGridField countryName = new ListGridField("countryName", "Country");
      
              countryGrid.setFields(countryCode, countryName);
      
              IButton newCountryButton = new IButton("New country");
              newCountryButton.addClickHandler(new ClickHandler()
              {
                  public void onClick (ClickEvent event)
                  {
                      countryGrid.startEditingNew();
                  }
              });
      
              DataSource cityDS = DataSource.get("city_DataSource");
              final ListGrid cityGrid = new ListGrid();
              cityGrid.setWidth(700);
              cityGrid.setHeight(224);
              cityGrid.setAlternateRecordStyles(true);
              cityGrid.setDataSource(cityDS);
              cityGrid.setAutoFetchData(false);
              cityGrid.setShowFilterEditor(true);
              cityGrid.setCanEdit(true);
              cityGrid.setEditEvent(ListGridEditEvent.CLICK);
              cityGrid.setCanRemoveRecords(true);
      
              ListGridField cityName = new ListGridField("cityName", "City");
      
              cityGrid.setFields(cityName);
      
              IButton newCityButton = new IButton("New city");
              newCityButton.addClickHandler(new ClickHandler()
              {
                  public void onClick (ClickEvent event)
                  {
                      ListGridRecord record = countryGrid.getSelectedRecord();
                      if (record != null) {
                          cityGrid.startEditingNew();
                      }
                      else {
                          SC.warn("Select country first.");
                      }
                  }
              });
      
              countryGrid.addSelectionChangedHandler(new SelectionChangedHandler()
              {
                  public void onSelectionChanged (SelectionEvent event)
                  {
                      if (event.getState()) {
                          ListGridRecord record = countryGrid.getSelectedRecord();
                          if (record != null) {
                              cityGrid.fetchRelatedData(record, countryDS);
                          }
                      }
                  }
              });
      
              cityGrid.addEditorEnterHandler(new EditorEnterHandler()
              {
                  public void onEditorEnter (EditorEnterEvent event)
                  {
                      cityGrid.setEditValue(event.getRowNum(), "countryId",
                                            countryGrid.getSelectedRecord().getAttribute("countryId"));
                  }
              });
      
              IButton fillDataButton = new IButton("Add some data");
              fillDataButton.addClickHandler(new ClickHandler() {
                  public void onClick (ClickEvent event)
                  {
                      RPCRequest req = new RPCRequest();
                      req.setActionURL("/fillData");
                      RPCManager.sendRequest(req, new RPCCallback() {
                          public void execute (RPCResponse response, Object rawData,
                                               RPCRequest request)
                          {
                              countryGrid.fetchData();
                          }
                      });
                  }
              });
      
              IButton vbButton = new IButton("VisualBuilder");
              vbButton.addClickHandler(new ClickHandler() {
                  public void onClick(ClickEvent event) {
                      com.smartgwtee.tools.client.SCEE.openVisualBuilder();
                  }
              });
              vbButton.draw();
      
              vStack.addMember(newCountryButton);
              vStack.addMember(countryGrid);
              vStack.addMember(newCityButton);
              vStack.addMember(cityGrid);
              vStack.addMember(fillDataButton);
      
              vStack.draw();
      
              countryGrid.getResultSet().setUseClientFiltering(Boolean.FALSE);
              countryGrid.getResultSet().setUseClientSorting(Boolean.FALSE);
          }
      }
      Addidtionlly - I had to add to GAEDS.gwt.xml:
      Code:
      <inherits name="com.smartgwtee.tools.Tools"/>
      Rebuilt project and it worked.

      Your exception shows that your GAE engine can not find javac.exe.
      GAE found javac.exe when you run example without changes... and can not find it after you changed onModuleLoad() - sounds really strange. Did you change anything else?

      Regards,
      Alius

      Comment


        #4
        I also added <inherits name="com.smartgwtee.tools.Tools"/> to the gwt.xml file; sorry if I forgot to mention that.

        To be clear, there was no evidence that the web app could find javac before I made the changes. The sample compiled and ran both before and after I added the visualBuilder launch code.

        Additionally, when I ran the showcase example (which already has the visualBuilder launch code in it), I got the same error.

        So, I think the appengine _compiler_ has no problem finding javac, but once the app is _running_ javac is no longer in any path or working directory. The JDK is installed and working merrily for Java projects, etc.

        I get the feeling that I need to add my JDK/bin directory to something like a class path or a working directory. I tried adding it to the classpath, and that didn't work. I assume the working directory needs to remain at its current war/.

        Thanks for the ideas, and for spending time recreating this - it's curious that it works for you. I guess I must have something misconfigured. More ideas about what could be misconfigured are welcome! :)

        Thanks again,

        Riley

        Comment


          #5
          Looks like you have some configuration issues on your PC.

          Do you have defined env variables?:
          JAVA_HOME
          APPENGINE_HOME
          PATH

          Could you post their values?

          Alius

          Comment


            #6
            Ah hah!

            Thanks for the inspiration. I did not have JAVA_HOME defined in my environment variables. I defined it, and everything seems to be working now.

            Thanks a lot - I feel a bit sheepish ;)

            Riley

            Comment


              #7
              When a software provider creates a tool like this, why would they make it necessary to write a program to run it? This makes no sense to me whatsoever. That's like having a browser but the only way to use the browser is to write a program that executes it and then have to run your own launching program every time you want to use it. Really???

              Comment


                #8
                Hi Phil,

                This way of doing things comes from the expected development cycle of GWT. Our sister product SmartClient works as you seem to expect because GWT is not involved. First take a look at the FAQ to understand what this tool is for when using GWT.

                Comment

                Working...
                X