- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的代码已更新。
In recall, I'm making a GWT+MySQL web application. I tried to modified a code from internet. Wen I run my project as a Web application (Debug As mode), I'm having the following compilation errors:
[ERROR] [deuxiemeapplicationgwt] - Unable to load module entry point class com.essai.client.DeuxiemeApplicationGwt (see associated exception for details)
[ERROR] [deuxiemeapplicationgwt] - Failed to load module 'deuxiemeapplicationgwt' from user agent 'Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.23) Gecko/20110920 Firefox/3.6.23' at 127.0.0.1:60265
onModuleLoad() threw an exception
Exception while loading module com.essai.client.DeuxiemeApplicationGwt. See Development Mode for details.
java.lang.reflect.InvocationTargetException 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 com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396) at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200) at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525) at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at com.google.gwt.user.client.ui.ComplexPanel.add(ComplexPanel.java:88) at com.google.gwt.user.client.ui.AbsolutePanel.add(AbsolutePanel.java:97) at com.google.gwt.user.client.ui.Panel.add(Panel.java:71) at com.essai.client.DeuxiemeApplicationGwt.onModuleLoad(DeuxiemeApplicationGwt.java:28) ... 9 more
文件代码也已更新并在此处:
============================================= ===
package com.essai.client;
import com.google.gwt.user.client.rpc.RemoteService;
import com.essai.client.User;
import java.io.Serializable;
public interface ConnexionBD extends RemoteService
{
public User authenticateUser(String user, String motDePasse);
}
==================================================
package com.essai.client;
import com.essai.client.User;
import com.google.gwt.user.client.rpc.AsyncCallback;
public interface ConnexionBDAsync {
public void authenticateUser(String User, String motDePasse,
AsyncCallback<User> callback);
}
============================================= ===
//EntryPoint file
package com.essai.client;
import com.essai.client.User;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.*;
public class DeuxiemeApplicationGwt implements EntryPoint, ClickListener, IsWidget {
private ConnexionBDAsync rpc;
private TextBox usernameBox;
private TextBox passwordBox;
private Button OK;
public DeuxiemeApplicationGwt() {
rpc = (ConnexionBDAsync) GWT.create(ConnexionBD.class);
ServiceDefTarget target = (ServiceDefTarget) rpc;
// The path 'MySQLConnection' is determined in ./public/LoginScreen.gwt.xml
// This path directs Tomcat to listen for this context on the server side,
// thus intercepting the rpc requests.
String moduleRelativeURL = GWT.getModuleBaseURL() + "MySQLConnection";
target.setServiceEntryPoint(moduleRelativeURL);
initGUI();
}
public void onModuleLoad() {
RootPanel.get().add(this);
}
private void initGUI() {
Grid g = new Grid(3, 2);
usernameBox = new TextBox();
passwordBox = new TextBox();
OK = new Button("OK");
g.setWidget(0, 0, new Label("Username: "));
g.setWidget(0, 1, usernameBox);
g.setWidget(1, 0, new Label("Password: "));
g.setWidget(1, 1, passwordBox);
g.setWidget(2, 1, OK);
}
public void onClick(Widget sender) {
if (sender.equals(OK)) {
AsyncCallback<User> callback = new AuthenticationHandler<User>();
rpc.authenticateUser(usernameBox.getText(),passwordBox.getText(),
callback);
}
}
private class AuthenticationHandler<T> implements AsyncCallback<User> {
public void onFailure(Throwable ex) {
RootPanel.get().add(new HTML("RPC call failed. :-("));
}
public void onSuccess(User result) {
//do stuff on success with GUI, like load the next GUI element
}
}
@Override
public Widget asWidget() {
// TODO Auto-generated method stub
return null;
}
}
============================================= ===
//ConnexionMySQL.java
package com.essai.server;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.essai.client.User;
import com.essai.client.ConnexionBD;
public class ConnexionMySQL extends RemoteServiceServlet implements ConnexionBD
{
private Connection conn = null;
private String status;
private String url = "jdbc:mysql://localhost/gestionpatients";
private String utilisateurBD = "root";
private String motDePasseBD = "";
public ConnexionMySQL()
{
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(url, utilisateurBD, motDePasseBD);
}
catch (Exception e)
{
}
}
public User authenticateUser(String user, String motDePasse)
{
User utilisateur = null;
try
{
PreparedStatement ps = conn.prepareStatement(
"select readonly * from docteurs where Noms = \"\" + user + \"\" AND " + "ID = \"\" + pass + \"\""
);
ResultSet result = ps.executeQuery();
while (result.next())
{
utilisateur = new User(result.getString(1), result.getString(2));
}
result.close();
ps.close();
}
catch (SQLException sqle)
{
//Comportement en cas d'erreur
}
return utilisateur;
}
}
============================================= ===
//User.java: user configuration
package com.essai.client;
import com.google.gwt.user.client.rpc.IsSerializable;
//import java.io.Serializable;
public class User implements IsSerializable
{
private String nomUtilisateur;
private String motDePasse;
@SuppressWarnings("unused")
private User() {}
public User(String user, String motDePasse)
{
this.nomUtilisateur = user;
this.motDePasse = motDePasse;
}
}
============================================= ===
//XML file
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='deuxiemeapplicationgwt'>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User'/>
<!-- Inherit the default GWT style sheet. You can change -->
<!-- the theme of your GWT application by uncommenting -->
<!-- any one of the following lines. -->
<inherits name='com.google.gwt.user.theme.clean.Clean'/>
<!-- <inherits name='com.google.gwt.user.theme.standard.Standard'/> -->
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
<!-- Other module inherits -->
<!-- Specify the app entry point class. -->
<entry-point class="com.essai.client.DeuxiemeApplicationGwt"/>
<inherits name="com.google.gwt.user.theme.standard.Standard"/>
<inherits name="com.google.gwt.user.theme.chrome.Chrome"/>
<inherits name="com.google.gwt.user.theme.dark.Dark"/>
<!-- Specify the paths for translatable code -->
<source path='client'/>
<source path='shared'/>
</module>
============================================= ===
项目结构可以在这里看到:http://tonguim.free.fr/divers/imgGWTtomcat.jpg
感谢您的帮助。
最佳答案
问题是您在 onModuleLoad()
中编写 RootPanel.get().add(this)
而 asWidget()
返回 空
。这与编写 RootPanel.get().add(null)
相同。这就是在 onModuleLoad
中抛出 NullPointerException 的原因。或者更准确地说,ComplexPanel.add(Widget, Element)
中的 child.removeFromParent();
行导致异常。
长话短说,让 asWidget()
返回 null
以外的内容。例如,使您在 initGui()
中创建的网格成为类成员并返回它。在当前形式下,initGui
无论如何都不会创建 GUI。
编辑 没有冒犯,但看看你的代码,你似乎并没有真正理解 GWT。除了将 null
添加到 RootPanel
之外,您的 Grid
没有附加到任何地方。此外,您实现了一个 ClickListener
,但您从未将此监听器附加到实际监听事件。如果这是完整的代码(不仅仅是为了可读性而剥离),您应该考虑阅读一些 gwt docs首先。
关于mysql - GWT+MySQL Web 应用程序 : compiling errors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8059787/
我在运行 compile test:compile it:compile经常并且...希望将击键次数减少到类似 *:compile 的数量。 .不过,它似乎不起作用。 $ sbt *:compile
有人可以给我这个问题的提示(或整个解决方案!): 在 Clojurescript 项目中,如何自动将编译日期/时间硬编码在符号中,以便在使用应用程序时显示? 谢谢。 最佳答案 有多种解决方案: 使用l
我是 ember.js 框架的新手,使用 ruby on rails 和 ember.debug.js -v 1.10.1(最新版本)。我一直在网上看到 ember 更改了这个最新的补丁,但我不知
我不是 Fortran 程序员(只是短暂的经验),但我需要编译一个部分用 F77 编写的程序。在我之前有人用 Absoft 编译器编译过它,但现在我需要在另一台机器上用 g77 重复这个过程。对于 A
我运行命令 mvn clean package 我得到了上面的错误我的 pom 是: http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0
我有以下问题。 我想在测试编译阶段排除一些.java文件(** / jsfunit / *。java),另一方面,我想在编译阶段包括它们(id我使用tomcat启动tomcat:运行目标) ) 我的p
符合 wikipedia A compiler is a computer program (or set of programs) that transforms source code writt
我想构建项目,但出现如下错误: 无法执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile
当我通过右键单击项目名称进行 Maven 安装时,出现以下错误: [INFO] Scanning for projects... [WARNING] [WARNING] Some proble
我是 Maven 的新手,我想将我的应用程序导入到 Maven。和以前一样,我想将我的 ejb 项目中的类引用到我的 war 项目中。我在类中没有错误,但是如果我在我的父项目上安装 maven,那么我
当我将 ASP.NET Web 应用程序部署到生产环境时,我使用配置转换来删除 debug="true"来自 .但是,就在今天,我注意到 web.config 中的另一个部分如下所示:
This question already has answers here: Maven Compilation Error: (use -source 7 or higher to enable
我正在使用 Maven 3.0.5 和 Spring Tool Source 3.2 并安装了 Maven 插件。当我尝试执行“运行方式---> Maven 安装”时,出现以下错误: [INFO] S
我试图用 AngularJS 创建我自己的递归指令,它调用自己以漂亮的 JSON 格式转换 View 中的对象。好吧,首先我使用 ng-include 调用带有模板的脚本,在其中使用 ng-if 验证
可以通过 @suppress annotation使用Google的Closure Compiler在每个文件的基础上禁止显示警告。但是,似乎无法同时抑制多个警告-例如globalThis和check
假设一个拥有 10 到 20 年经验的熟练开发人员从未构建过编译器或模拟器,哪一个会更具挑战性? 你能比较一下会成为障碍的问题吗? 谢谢。 最佳答案 仿真和编译是完全不同的,但由于两者都被认为是“低级
最近发现Vim中有一个命令叫compiler。您可以使用任何常见的编译器(例如,:compiler gcc、:compiler php 等)来调用它,但它似乎没有任何立竿见影的效果。 我在联机帮助页上
我试图从 spring.io 指南中部署最简单的应用程序 Guide 但是我有一些麻烦.. 我做了什么: 创建的项目。 (来自 spring.io 教程) 下载 heroku CLI 在 Intell
每当进行 Maven Build..>clean install 时,我都会遇到此错误。我尝试过使用不同版本的插件并添加 testFailureIgnore 属性,但问题仍然存在。请找到下面的 POM
我有一个 web 应用程序,我尝试使用 maven 进行编译,不幸的是,在执行 mvn clean package 时它不起作用。 stackoverflow 上有很多问题看起来都一样,但没有解决了我
我是一名优秀的程序员,十分优秀!