分类 "工具" 的存档.

Eclipse+Maven+WTP+Tomcat不能Run On Server其中一个原因

使用Maven有段时间了,自己DIY项目后遇到了一个问题,项目不能使用WTP提供的Run On Server功能……

1、问题描述

配置好项目,配置好Tomcat6,加入项目到Tomcat中然后运行Tomcat没有加载项目的日志信息

2、环境配置

  • Eclipse With Java EE + WTP + Maven
  • WTP的组件配置.settings/org.eclipse.wst.common.component
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
  <wb-module deploy-name="exercise-admin">
    <property name="context-root" value="exercise-admin"/>
                <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
 
        <wb-resource deploy-path="/" source-path="/src/main/webapp/js"/>
        <wb-resource deploy-path="/" source-path="/src/main/webapp/common"/>
        <wb-resource deploy-path="/" source-path="/src/main/webapp/WEB-INF/content"/>
        <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
    <property name="java-output-path" value="/target/classes"/>
  </wb-module>
</project-modules>

说明一下wtp的默认规则,org.eclipse.wst.common.component规定deploy-path为斜杠(/)并且是包含WEB-INF的wb-resource要在第一位,所以我在这里犯错了,看上面的配置就清楚了

3、问题原因

我一向喜欢“工欲善其事必先利其器”;因为基于Maven的WTP工程默认只有一个

<wb-resource deploy-path="/" source-path="/src/main/webapp"/>

看截图

Maven + WTP默认的WebResources


所以默认的.settings/org.eclipse.wst.common.component的配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
  <wb-module deploy-name="exercise-admin">
    <property name="context-root" value="exercise-admin"/>
                <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
 
        <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
    <property name="java-output-path" value="/target/classes"/>
  </wb-module>
</project-modules>

现在比较一下就比较清楚了,原因是我DIY的配置多了3行,所以我DIY的配置如下:

还有另外一个原因就是因为我的通过m2eclipse插件提供的SCM功能checkout项目,原本DIY配置好的项目被eclipse改动了,从svn信息看得出来,所以导致了问题的发生

4、问题关键所在

保证项目的.settings/org.eclipse.wst.common.component文件中的

<wb-resource deploy-path="/" source-path="/src/main/webapp"/>

在以deploy-path=”/”的wb-resource排在第一位,因为tomcat启动时要读取WEB-INF/web.xml,如果不在第一位找不到当然服务不能启动

5、问题解决

  • 根据上面说的保证webapp的位置即可,最终配置如下,可以保留DIY结果又可以启动服务:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <?xml version="1.0" encoding="UTF-8"?>
    <project-modules id="moduleCoreId" project-version="1.5.0">
      <wb-module deploy-name="exercise-admin">
        <property name="context-root" value="exercise-admin"/>
                    <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
            <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
            <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
            <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
            <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
            <wb-resource deploy-path="/" source-path="/src/main/webapp/js"/>
            <wb-resource deploy-path="/" source-path="/src/main/webapp/common"/>
            <wb-resource deploy-path="/" source-path="/src/main/webapp/WEB-INF/content"/>
        <property name="java-output-path" value="/target/classes"/>
      </wb-module>
    </project-modules>
    
  • 或者不要使用m2eclipse提供的SCM检出功能,直接用乌龟checkout,这样就不会因为eclipse自动设置修改.settings/org.eclipse.wst.common.component配置了

Popularity: 6%

Springside3.3.3报错:java.lang.NoClassDefFoundError: org/codehaus/classworlds/Launcher解决办法

Springside刚刚发布了Springside 3.3.3版本,不过这次回复了generate-project.bat文件可以创建mini-web类型的项目。

下载了all-in-one版本,然后运行quick-start.bat出现问题了……

Exception in thread “main” java.lang.NoClassDefFoundError: org/codehaus/classworlds/Launcher
Caused by: java.lang.ClassNotFoundException: org.codehaus.classworlds.Launcher
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: org.codehaus.classworlds.Launcher.  Program will exit.

Exception in thread “main” java.lang.NoClassDefFoundError: org/codehaus/classworlds/LauncherCaused by: java.lang.ClassNotFoundException: org.codehaus.classworlds.Launcher        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)        at java.security.AccessController.doPrivileged(Native Method)        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)Could not find the main class: org.codehaus.classworlds.Launcher.  Program will exit.

一时也找不到原因,最直接有效的方式就是打开bat文件查看问题出现在哪里,打开后一看晓得了……因为springside的all-in-one版本里面含有maven工具,可以查看quick-start.bat的第10行命令:

if exist “tools\maven\apache-maven-2.2.1\” set MVN=”%cd%\tools\maven\apache-maven-2.2.1\bin\mvn.bat”

很清楚springside使用的maven版本是2.2.1,而我本地的版本号是用的Apache Maven 3.0-beta-1,然后我就试着注释掉了第10行命令,再运行,OK
所有使用Apache Maven 3.0-beta-1的同学注意了,如果报错就把第10行注释掉,也就是在前面加上#

再次感谢白衣整合了这么好的框架!

Popularity: 5%

FireFox3.5=速度的象征

对于一个工具的感觉写博客没有多大的意义,但是遇到了firefox3.5我不得不说了,更新好了感觉就一个字“快”

官方说比3.0快2倍,虽然感觉没有2倍的速度但是现在的感觉不再像以前那样老驴拦磨了,目前的网站前端和用户的交互较多,而这次更新也正是提升了JAVASCRIPT的性能才会感觉速度快了

目前感觉和GOOGLE的速度差不多了,厉害

Popularity: 1%

IE浏览器下的JS实用调试小工具——fullsource(2K)

大家知道在IE浏览器下,右键查看源代码时,不能看到JS操作DOM生成的一些东西的源代码,这个小工具可以从当前的DOM中把真正的源代码拿出来。很方便在IE浏览器下调试
官方下载地址:http://www.thundermain.com/FullSource.html
fullsource截图

fullsource截图

Popularity: 2%

推荐一个不错的js编辑工具Spket IDE for eclipse

开发基于Java的RIA应用必不可少的javascript代码工具

可以自定义js提示文件,我现在使用的就是这个,自定义号jQuery的源码文件,在写js文件是超方便

单击里边的图片可以看到详细的视频教程,基于eclipse

http://www.spket.com/demos.html

下载地址:http://www.spket.com/download.html

安装是主意对应features和plugins目录

安装完成后进入:

阅读更多…

Popularity: 6%

分享:JavaScript在线压缩工具

第一个:YUI Compressor Online

第二个:packer

  • 地址:http://dean.edwards.name/packer/
  • 可以压缩javascript和CSS文件,需要手动复制源码到文本框
  • 压缩可选择性:
  • ——>缩短变量名称

Popularity: 3%