首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

bat执行java的有关问题

2012-01-28 
bat执行java的问题原本项目是用SSH在TOMCAT下运行的,现在要增加一个批量导入EXCEL文件的功能,我写了几个导

bat执行java的问题
原本项目是用SSH在TOMCAT下运行的,现在要增加一个批量导入EXCEL文件的功能,我写了几个导入类,打算用BAT使其能够执行

问题:我在classpath中设置的包好像没有引入进来,此BAT文件是要放在tomcat的bin目录里的

bat内容如下:

Java code
@echo offtitle 导入EXCEL文件echo 开始载入类文件及包...set curDir=%cd%cd ..set tomcatDir=%cd%cd %curDir%set base=%tomcatDir%\webapps\ROOT\WEB-INFset class=%base%\classesset lib=%base%\libset class_path=%CLASSPATH%;%class%;%lib%echo %class_path%rem *******************************************rem 在此处设置要导入文件所在文件夹set lidaDir="C:\lida"set haiwanDir="C:\haiwan"rem *******************************************if not %lidaDir%=="" (call :importData lida %lidaDir%)if not %haiwanDir%=="" (call :importData haiwan %haiwanDir%)pauserem ----------------导入数据子程序:importData@echo offif "%2"=="" goto :eofpushd %class%for /r %2 %%i in (*.xls) do (echo %%~fi %cd%if "%1"=="lida" (java -classpath %class_path% com.***.cms.excel.LiDaImportExcel %%~fi)if "%1"=="haiwan" (java -classpath %class_path% com.***.cms.excel.HaiWanImportExcel %%~fi))popdgoto :eof


报错信息如下:

开始载入类文件及包...
.;C:\Java\jdk1.6.0_14\lib\dt.jar;C:\Java\jdk1.6.0_14\lib\tools.jar;D:\tomcat6[20
100729]\webapps\ROOT\WEB-INF\classes;D:\tomcat6[20100729]\webapps\ROOT\WEB-INF\l
ib
C:\lida\利达报警——3教.xls D:\tomcat6[20100729]\webapps\ROOT\WEB-INF\classes
Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/criteri
on/Criterion
Caused by: java.lang.ClassNotFoundException: org.hibernate.criterion.Criterion
  at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
  at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: com.hikvision.cms.excel.LiDaImportExcel. Program
 will exit.
C:\lida\利达报警——活动中心.xls D:\tomcat6[20100729]\webapps\ROOT\WEB-INF\class
es
Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/criteri
on/Criterion
Caused by: java.lang.ClassNotFoundException: org.hibernate.criterion.Criterion
  at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
  at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: com.hikvision.cms.excel.LiDaImportExcel. Program
 will exit.
C:\lida\利达报警——图书馆.xls D:\tomcat6[20100729]\webapps\ROOT\WEB-INF\classes

Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/criteri
on/Criterion
Caused by: java.lang.ClassNotFoundException: org.hibernate.criterion.Criterion
  at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:252)


  at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: com.hikvision.cms.excel.LiDaImportExcel. Program
 will exit.
C:\lida\利达报警——行政楼.xls D:\tomcat6[20100729]\webapps\ROOT\WEB-INF\classes

Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/criteri
on/Criterion
Caused by: java.lang.ClassNotFoundException: org.hibernate.criterion.Criterion
  at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
  at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: com.hikvision.cms.excel.LiDaImportExcel. Program


找不到主类,而且hibernate包导不进去,其中导入excel的两个文件都是在web-inf\classes下的

[解决办法]
设置lib的时候,要具体指定jar
set class_path=%CLASSPATH%;%class%;%lib%/aaa.jar;%lib%/bbb.jar;
[解决办法]
我感觉你的批量导入跟批量上传很类似,可以直接在action中处理
[解决办法]
基本可以确定的是CLASSPATH,JAVA_HOME, CATALINA_HOME这三个环境变量的事情。
[解决办法]
得到jar 

C# code
@echo offsetlocal enabledelayedexpansion set jars=for /r . %%i in (*.jar) do (set jars=!jars!%%i;)echo %jars%pause>nul
[解决办法]
把环境变量 版本信息什么的都发一遍没准能找到原因.
[解决办法]
探讨
引用:
设置lib的时候,要具体指定jar
set class_path=%CLASSPATH%;%class%;%lib%/aaa.jar;%lib%/bbb.jar;


能否提供个可以读取文件夹下所有文件名并组合成以分号分隔的字符串的BAT脚本呢?

[解决办法]
自己查看帮助 cmd

呵呵,楼主加油
[解决办法]
表示关注

另外,现在有很多JAVA打包工具,可以打包一个exe的引导程序,建议楼主关注一下。

好像有一个叫 install4j
[解决办法]
关注下,自己对Bat这方面的很不了解

热点排行