JUnit Test的时候出现了这个栈溢出的错误,如下图。
StackOverflowError,虚拟机栈和本地方法栈溢出。
关于虚拟机栈和本地方法栈,在 Java 虚拟机规范中描述了两种异常:
1.如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出 StackOverflowError 异常。
2.如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出 OutOfMemoryError 异常。
所以栈溢出出现的场景还是有很多种,但是在这里,之所以会出现这种情况是因为maven的配置问题
右键项目-properties-maven,可以看到这里什么都没有写~,然而根据pom.xml的配置,这里应该写个test的。
具体写什么就看id名是什么咯,这个地方经常会写dev的。
在之前的博客里我提到要仔细的学习技术,为了做到言行一致,就来探索一下为什么要这么做的原因吧!
maven几乎是一工作就接触到了,但是没有细细的研究过,一直只是把maven作为管理诸多jar包的一个工具,并没有去认真的了解这些配置及参数的含义。
比如groupId跟artifactId,在《Maven 实战》这本书里就提到groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联,譬如你在 googlecode 上建立了一个名为 myapp 的项目,那么groupid就应该是com.googlecode.myapp;
artifactId定义了当前Maven项目在组中唯一的ID,这句话是个什么意思呢?我也不知道,但是我发现大多数artifactId都是项目的名字。
还有version啊,默认的就是0.0.1-SNAPSHOT,SNAPSHOT是快照的意思,说明该项目还处在开发中,是不稳定的版本,要是改个别的当然也是可以的。
具体的可以参看《Maven实战》这本书,没有的可以来这个地方下载一本研究下http://download.csdn.net/detail/yolanda_nuonuo/9789705
工作年限不长,但是在我的强迫症师父的带领和督促下,让我对这些规范也有了迷之执着,顶见不得别人写代码等号左右没有空格,like this
真的是分分钟drive me crazy!还有一个方法里恨不得写个几千行也不按功能分几个出来,更可怕的是!别的地方再写一个方法又写个几千行,里面还有跟刚才重复的几千行代码,那就真的是......
跑偏了~~~其实想说active maven profiles是干嘛用的,这个是激活maven profiles的方式
<activation>
<activeByDefault>true</activeByDefault>
</activation>
加上这一句话就可以配置默认自动激活,具体可参考这篇博文
http://juvenshun.iteye.com/blog/208714