我将一些现有项目从蚂蚁改为了maven项目.到现在为止还挺好.
所有项目都有相同的groupId.这是一个名为"ServerBase"和artifactId"server-base"的项目.在这个项目中有一个抽象类"BaseService",它通过以下方式定义记录器:
import org.jboss.logging.Logger;
[...]
protected Logger log = Logger.getLogger(this.getClass());
Run Code Online (Sandbox Code Playgroud)
另一个名为"Server"和artifactId"server"的项目.在这个项目中,有一个类ConfigurationDAOImpl扩展了上面的BaseService-Class.在ConfigurationDAOImpl中,记录器日志用于创建一些输出.
在"服务器"的POM文件中,我声明了:
<dependency>
<groupId>com.tcom.amadeus</groupId>
<artifactId>server-base</artifactId>
<version>${project.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在BuildPath下,依赖关系在MavenDependencies下显示得非常好.我之前从构建路径中删除了旧的dirct/natural/ant-dependency.如果我删除它我会得到很多关于缺少类等的错误.但是虽然我确实有这种依赖,但我在eclipse中得到了followin错误(在制表符标记下):
The type org.apache.commons.logging.Log cannot be resolved. It is indirectly referenced from required .class files
Resource: ConfigurationDAPImpl.java
Path: /Server/src/main/...
Location: Line 24
Type: Java Problem
Run Code Online (Sandbox Code Playgroud)
我尝试删除依赖项并再次添加它,但没有任何运气.这两个项目都参考了JAVA 1.8.这两个项目都是使用目标清理包多次构建的.这两个项目都由Righclick更新或按F5.我正在使用Eclipse版本:Neon.1a版本(4.6.1)我正在使用apache-maven-3.3.9我正在使用m2e插件.
任何进一步的帮助将不胜感激.提前致谢.
我试图从java.sql.PreparedStatement对象获取ParameterMetaData.
虽然文档说它在数据库出现问题时抛出了SQLException,但我现在得到一个ArrayIndexOutOfBoundsException.
我正在使用这个JDBC驱动程序URL:oracle.jdbc.driver.OracleDriver我正在使用ojdbc6.jar和64位JDK 1.6.0.45.
我正在做以下事情:
PreparedStatement stmt = myOracleConn.prepareStatement(sql);
preparedStatements.add(stmt);
ParameterMetaData bla2 = stmt.getParameterMetaData(); //this Line throws the Exception
Run Code Online (Sandbox Code Playgroud)
我发现只有当我在sql-String中使用注释时才会发生这种情况.
所以,当我的SQL是:
1)(没有评论但参数)
"SELECT * FROM DUAL WHERE 1 = ?" --> no error occurs
Run Code Online (Sandbox Code Playgroud)
2)(评论和参数)
"/* mySampleComment */ SELECT * FROM DUAL WHERE 1 = ?" --> the indexoutofbounds exception occurs
Run Code Online (Sandbox Code Playgroud)
3)(评论但没有参数)
"/* mySampleComment */ SELECT * FROM DUAL WHERE 1 = 1" --> no error occurs
Run Code Online (Sandbox Code Playgroud)
我想知道这是不是我和我不能在我的sqls中使用评论或者我是否遗漏了某些东西......有人对此有所了解吗?
edit1:使用--comments而不是/**/导致相同的行为.edit2:它似乎根本没有,我有一个包含的大SQL
\n\t\t\t\t--great
Run Code Online (Sandbox Code Playgroud)
得到例外.当将这个包含在样本sqls仍然postet时,它将工作
如果我遗漏了一些信息,只需要求它.提前致谢.
我实现了一种算法,在其中使用了优先级队列。我受到这个问题的启发: Transform a std::multimap into std::priority_queue
我将存储多达 1000 万个具有特定优先级值的元素。
然后我想迭代直到队列为空。每次检索元素时,它也会从队列中删除。
在此之后,我重新计算元素优先级值,因为之前的迭代它可以改变。
如果值确实增加了,我将再次将元素插入队列中。这种情况更常发生,取决于进度。(前 25% 不会发生,接下来的 50% 会发生,最后 25% 会发生多次)。
接收到下一个元素并且不重新插入后,我将对其进行处理。这对于 I 不需要此元素的优先级值,而是此元素的技术 ID。
这就是我直觉地选择 astd::multimap
来实现这一点的原因,.begin()
用于获取第一个元素,.insert()
插入并.erase()
删除它。此外,我没有直观地std::priority_queue
直接选择,因为本主题的其他问题回答std::priority_queue
最有可能仅用于单个值而不是映射值。
阅读上面的链接后,我使用优先级队列类似于链接中的另一个问题重新实现了它。我的运行时间似乎并没有那么不平等(在 10 个 mio 元素上大约一个小时)。现在我想知道为什么std::priority_queue
更快。
std::multimap
由于多次重新插入,我实际上希望更快。也许问题是multimap的重组太多了?
简而言之:
从 Junit4 迁移到 JUnit5 存在困难。删除后,@RunWith(SpringRunner.class)
我的@MockBean
注释服务为空,尽管我使用的是“@WebMvcTest”。为什么它不起作用?
long:
几天来我一直在努力解决这个问题。我正在对我的 Spring Boot 应用程序进行一些测试,使用@RunWith(SpringRunner.class)
im 与@WebMvcTest
.
由于那是 JUnit4,我试图迁移到 Junit5。我从 pom 中删除了 vintage 依赖项,并添加了spring-boot-starter-test
. JUnit 5 只剩下依赖项了junit-jupiter
。
我读了一些关于这方面的帖子和示例。由于我不想加载完整的上下文,SpringBootTest 不是这样的方式(并且根本不起作用),我“认为”我发现这@WebMvcTest
已经足够了,因为它已经包含@extendWith
与 JUnit5 等效的注释@RunWith(SpringRunner.class)
。所以:我只需要删除 springRunner 就可以了。
但是删除那一行后,我的带有 @MockBean 注释的服务从现在开始为空。我可以找到许多仅使用@WebMvcTest
和 的示例@MockBean
。所以我不明白,为什么我的不起作用。添加@RunWith(SpringRunner.class)
使其再次工作。
这就是测试类(没有 springrunner):
package my.package;
import com.fasterxml.jackson.databind.ObjectMapper;
import my.package.controller.SkillTileCommand;
import my.package.controller.SkillTileController;
import my.package.controller.SkillTileResponse;
import my.package.service.SkillTileService;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType; …
Run Code Online (Sandbox Code Playgroud)