我用eclipse写了一个客户端程序,在eclipse下运行没有问题,由于在eclipse中跑客户端不方便,然后打算写一个.bat文件来调用class文件,已经把用到的.jar包都放到lib目录下面了,也能找到class文件,但是一运行.bat文件就报错:Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing
class,我怀疑是java版本不一致,但是我建立eclipse工程用的是jdk1.5,系统的path设置的也是jdk1.5,为什么还会报错呢?请高人指点一下,先谢谢了!
.bat文件如下:
@echo off
set TMP_CLASSPATH=%CLASSPATH%
set CLASSPATH=%CLASSPATH%;.\lib\for %%i in (".\lib\*.jar") do call ".\cpappend.bat" %%iset F_CLASSPATH=%CLASSPATH%
set CLASSPATH=%TMP_CLASSPATH%
set JAVA_HOME="C:\Program Files\Java\jdk1.5.0_09"
title GetFltInfoFullMsgTest
%JAVA_HOME%\bin\java -cp "%F_CLASSPATH%" com.travelsky.fgos.interfaces.webservice.client.getFltInfoFull.getFltInfoFullClientPAUSE
其中:cpappend.bat文件为:set CLASSPATH=%CLASSPATH%;%1
系统的path=C:\Program Files\Java\jdk1.5.0_09\bin; JAVA_HOME=C:\Program Files\Java\jdk1.5.0_09

解决方案 »

  1.   

    eclipse中运行结果:
    2008-12-25 20:58:32,281 INFO [com.travelsky.fgos.interfaces.webservice.client.getFltInfoFull.getFltInfoFullClient] - 初始化:...
    log4j:WARN No appenders could be found for logger (org.springframework.core.CollectionFactory).
    log4j:WARN Please initialize the log4j system properly.
    2008-12-25 20:58:56,375 INFO [com.travelsky.fgos.interfaces.webservice.client.getFltInfoFull.getFltInfoFullClient] - 初始化结束!
    2008-12-25 20:58:57,000 INFO [com.travelsky.fgos.interfaces.webservice.client.getFltInfoFull.getFltInfoFullClient] - 开始:
    checkPoint = 20081223000020
    .....bat文件运行后
    2008-12-25 21:29:20,531 INFO [com.travelsky.fgos.interfaces.webservice.client.ge
    tFltInfoFull.getFltInfoFullClient] - 初始化:...
    log4j:WARN No appenders could be found for logger (org.springframework.core.Coll
    ectionFactory).
    log4j:WARN Please initialize the log4j system properly.
    2008-12-25 21:29:44,796 INFO [com.travelsky.fgos.interfaces.webservice.client.ge
    tFltInfoFull.getFltInfoFullClient] - 初始化结束!
    Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing
    class
            at java.lang.ClassLoader.defineClass1(Native Method)
            at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
            at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
    4)
            at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
            at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
            at com.travelsky.fgos.interfaces.service.webservice.dynamicfltinfo.FltIn
    foSvcPortTypeProxy._initFltInfoSvcPortTypeProxy(FltInfoSvcPortTypeProxy.java:18)        at com.travelsky.fgos.interfaces.service.webservice.dynamicfltinfo.FltIn
    foSvcPortTypeProxy.<init>(FltInfoSvcPortTypeProxy.java:8)
            at com.travelsky.fgos.interfaces.webservice.client.getFltInfoFull.getFlt
    InfoFullClient.main(getFltInfoFullClient.java:73)
      

  2.   

    我系统中有jdk1.4,和1.5,但是我觉的我环境设定的是1.5啊,问题出在哪里了呢?
    唯一不同的是,eclipse建立项目时选定环境是1.5,.bat文件是利用系统的,但是两个都是指的一个啊
      

  3.   

    把所有的东西弄成jar包,然后运行jar包。,你放把class文件copy出来是不能运行的。
      

  4.   

    我最近也在被这中问题困挠,单纯的java命令就不好用,但是我换到同事的电脑上就行,我怀疑是环境的问题,就把classpath和path根据同事的全换了一遍,结果还是不行,由于时间紧就没有研究,现在我换了他的电脑在测试。
    所以帮楼主顶下。