今天在进行代码集成测试的时候,对集成测试的java代码进行 run-Junit Test,本来应该console应该打印出来运行信息的
但是实际console打印出来的如下图所示:
个人觉得相当好奇,但是在同一个workset的里面的其他工程就没有问题
根据eclipse的运行原理,其实run-junit Test 就是 执行javaw –classpath ***/**.jar ***/***/Test 类似的命令 和run-application 其实是一样的。那么就写了添加了一个main方法,期望应该是一样的结果,果真运行run-application之后,console显示的结果和上面的一样
开始觉得是eclipse的问题或者修改过代码的问题,重新下载了代码和新的eclipse结果都还是一样,后来又确认了jvm的版本,全部都是用jdk1.6.0_31的版本,以前的版本都删除了,但是还是一样的问题。
在推理,发现workset的其他工程里面的代码都是可以运行的,发现估计和eclipse和jvm没有太大的关系。联想到这个工程依赖的jar包很多,是不是和这个有关。先删除了部分依赖的jar包(删除了一半),在运行程序,发现没有报以上错误了。觉得问题可能出现在这里。 初步怀疑是不是classpath太长,导致javaw 命令无法执行。
我们所有的功能依赖jar都是通过mvn管理的,默认mvn仓库是c:\documents and settings\用户名\repository里面, 所以每一个依赖的jar包,都有这个前缀,我先减少这个前缀尝试一下,所以就把默认的repo目录指向了d:\repo目录,重新编译执行依赖,刷新eclipse代码,再次执行run-application,发现程序正常运行。后来为了验证我的猜测,写了一段代码进行验证:
public class Test {
public static void main(String[] args) throws Exception {
StringBuilder sb = new StringBuilder();
sb.append("javaw ");
sb.append("-classpath ");
//构造长的路径classpath
for (int i = 0; i < 1000; i++) {
sb.append("D:/repo/log4j/log4j/1.2.13/log4j-1.2.13.jar,");
}
sb.deleteCharAt(sb.length() - 1);
sb.append(" com.company.test.Test");
System.out.println(sb.toString());
//执行命令
Process process = Runtime.getRuntime().exec(sb.toString());
//打印结果
List<String> list = IOUtils.readLines(process.getInputStream());
for (String s : list) {
System.out.println(s);
}
}
}
运行这段代码,应该打印出来的结果和上面一样,结果如下,符合我的猜测
Usage: javaw [-options] class [args...]
(to execute a class)
or javaw [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:<value>
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:hprof
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
-splash:<imagepath>
show splash screen with specified image
我们把命令打印出来,copy到cmd命令行里面执行,发现命令行不完整,被自动截取了
这个命令根本都不完整,后面指令的class丢失了,javaw参数中没有指定要运行的类,就导致我们看到的结果。
这个可能是windows下,和shell指令的长度限制有关。
分享到:
相关推荐
右键调到文件夹中显示该文件 能够快速的找到文件位置 非常实用
20140927Eclipse错误日志
Eclipse快捷键与使用技巧总结,很好!
eclipse中一款经典sql插件
关于eclipse的使用
在eclipse中一个java文件中的四个公共类为何放在四个包中就提示出错,而放在一个包中就可以呢?
这是我收集的一些Eclipse的文档。关于Eclipse的概念和一些操作。
Launcher可导Eclipse无错误+Launcher学习总结.zip 自己下载源码 导入 修改错误(添加三个包+一个文件)还有个学习总结 Android4.0 Launcher源码 导入Eclipse无错误
主要是eclipse插件FindBugs中错误的解释说明,帮助定位错误原因
内容包括java开发环境的搭建,eclipse的下载安装和卸载,eclipse的一些简单的使用方法和遇到的一些问题的解决
eclipse快捷键大全总结学习,使用eclipse必学习知识
关于Eclipse的详细用法总结 关于Eclipse的详细用法总结 关于Eclipse的详细用法总结
运行eclipse提示JVM错误的解决方法
Eclipse中一键Import导入Preferences即可配置豆沙绿背景色与最佳匹配代码颜色
eclipse大礼包(这些年收集的关于eclipse的一些经典书籍) Eclipse.Step.by.Step.eBook-LiB Eclipse整合开发工具 Eclipse中文教程 Eclipse中文手册 Java开源技术:Eclipse的使用技巧详解 经典不经典,看完再说 ...
Eclipse插件安装总结 手把手教你怎么样安装插件和纠正插件安装错误!
Android开发eclipse错误汇总,是一些平时遇到的错误
eclipse+ MinGW总结,对于eclipse的开发大有裨益
对Eclipse4.3(Kepler server release2)版本配置Axis2-1.6.2,开发webservice服务接口,里面是自己配置过程中的总结和一些相关的插件压缩包,还有一份word文档是我操作的一些总结,希望对大家有所帮助。
Eclipse配置,错误笔记.资源是图片,主要是常见错误,和Eclipse配置