我正在使用maven shade插件为我的项目生成一个合并jar.jar是按预期生成的,当我尝试使用jar并运行它时,我得到了一个
java.lang.SecurityException:Manifest主要属性错误的签名文件摘要无效.
我搜索了上面的错误消息,许多人建议从META-INF目录中排除清单签名.因此,我已经包含了从目录中排除这些文件的步骤[我看到两个文件的名称JARSIGN_.RSA
和JARSIGN_.SF
],但由于一些奇怪的原因,maven shade插件无法从META-INF目录中排除这些文件.谁能解释一下我可能做错了什么?我的pom.xml在下面,我用来生成jar的命令是:
mvn clean package shade:shade
Run Code Online (Sandbox Code Playgroud)
的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.abc.xyz</groupId>
<artifactId>myjar</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<url>http://maven.apache.org</url>
<properties>
<!-- A few custom properties -->
</properties>
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<!-- Other The dependencies are here -->
</dependencies>
<repositories>
<!-- Repository Information -->
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- Maven Shade Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.2</version>
<executions> …
Run Code Online (Sandbox Code Playgroud) 当我使用时@InjectMocks
,发生了异常。我的代码如下所示:
class A {
private X x;
private Y y;
public A(String ip, int port) {
this(someMethodCall(ip, port)); //
}
private A(X x) {
this.x = x;
this.y = new Y();
}
}
UT:
public class ATest() {
@InjectMocks A a;
@Mock X x;
@Mock Y y;
@Test ...
}
Run Code Online (Sandbox Code Playgroud)
它会抛出 NPE,有人可以帮助我吗?
org.mockito.exceptions.base.MockitoException: Cannot instantiate @InjectMocks field named 'channel' of type 'class Juinit3.Channel'. You haven't provided the instance at field declaration so I tried to construct the instance. …
我有一个包含一些测试数据的数据库,我想使用它们的属性 DATE 对它们进行体面的排序,并且只使用所有测试中的第一个。我的意思是,相当于 JPQL 中 SQL 的 TOP 1。
谢谢你的帮助!
你能帮我用Hibernate来持久保存字符串的地图吗?
地图值来自客户端并且是随机的,因此我不想为地图的值存储单独的表
引起:org.hibernate.AnnotationException:找不到关联的类:java.lang.String
@Entity
public class UserConfig {
@Id
@SequenceGenerator(sequenceName = "CONFIG_SEQ", name = "ConfigSeq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ConfigSeq")
private Long id;
@ElementCollection(targetClass = String.class)
@CollectionTable(name = "MAP")
@MapKey(name="key")
@Column(name="value")
private Map<String, String> map;
Run Code Online (Sandbox Code Playgroud)
你能否解释如何坚持Map<MyEnum, String>
,如果MyEnum
是一个未映射的类?
我们试图根据它包含的对象过滤\操作Persistent Collection(过滤掉特定的条目).
由于此操作将在包含不同集合的大量不同对象上执行,因此它必须尽可能通用.在HQL\SQL级别上过滤不是一种选择,因为它无法维护.这意味着必须在加载和初始化集合后执行.我们目前正在使用许多Hibernate事件来处理单个对象,所以我们尝试了监听InitializeCollectionEvent
.但事实证明,我们的大多数集合都是使用HQL Fetch初始化的,因此不会为它们引发此事件.
我们可以使用其他任何Hibernate事件吗?
加载后处理集合的任何其他地方?
我们正在使用Hibernate 4.1.7.
我的Spring JPA应用程序中有三个独立的实体 - User,Department,Role
我的数据库中有一个连接表来关联每个实体: USER_DEPARTMENT_ROLE
我的问题是,如何在我的实体类中定义这种关系?我是否必须@ManyToMany
在每个单独的实体中定义关系?我知道如何定义两个表之间的这种关系,但是对于两个以上的表,我不知道从哪里开始.
任何帮助表示赞赏!
我正在尝试 JPA 对数据库锁定的支持,以避免记录中的并发请求。在我的场景中,我需要使用悲观锁。我使用以下方法得到了这一点:
EntityManager em;
...
Map<String,Object> props = new HashMap<String,Object>();
props.put("javax.persistence.lock.timeout", 0);
em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_READ, props)
Run Code Online (Sandbox Code Playgroud)
但通过这种方法,我处理 aLockTimeoutException
而不是 a PessimisticLockException
。具体如何处理PessimisticLockException
?
我正在使用Mockito jar为Groovy编写我的Junit测试用例,但是它给了我以下异常:
java.lang.NoSuchMethodError: org.mockito.internal.runners.RunnerFactory.createStrict(Ljava/lang/Class;)Lorg/mockito/internal/runners/InternalRunner;
at org.mockito.junit.MockitoJUnitRunner.<init>(MockitoJUnitRunner.java:152)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Run Code Online (Sandbox Code Playgroud)
下面是我的jar列表:
cglib-nodep-2.2.2
javassist-3.19.0-GA
junit-4.12
mockito-all-1.10.19
objenesis-2.5
powermock-mockito-1.6.2-full
Run Code Online (Sandbox Code Playgroud)
以下是我的代码.我添加了必要的导入:
package test.service
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.InjectMocks
import org.mockito.Mock
import org.mockito.junit.MockitoJUnitRunner
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
class SyncImplTest {
@InjectMocks
SyncThreatImpl fixture;
@Mock
RpcConfigurationLoader rpcConfigurationLoader
@Test
public void testRpcConfig(){
RpcApiInfo rpcApiInfo …
Run Code Online (Sandbox Code Playgroud) 我有以下测试方法:
MyClass myClass= Mockito.mock(MyClass.class);
Mockito.when(myClass.methodUsedInMethodBeingTested(Matchers.any(MyTypeParam.class))).thenReturn(Collections.<X, Y> emptyMap());
assertNull(myClass.methodToTest(myObject));
Mockito.verify(myClass).methodUsedInMethodBeingTested(Matchers.any(MyTypeParam.class));
Run Code Online (Sandbox Code Playgroud)
这methodUsedInMethodBeingTested
是一个我想模拟并返回空地图的方法.但是我收到了失败的消息
想要但没有调用myClass.methodUsedInMethodBeingTested()
.
MyClass
{
public XYZ methodToTest()
{
....
....
Map<X,Y> mp = methodUsedInMethodBeingTested(myTypeParam);
.....
}
public Map<X,Y> methodUsedInMethodBeingTested(MyTypeParam myTypeParam)
{
.....
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个简短的问题:
我需要repo.save(x)
调用@Transactional
方法吗?
我问因为我在没有保存的情况下看到了我的数据库的更改,并且没有阅读有关它的明确文档.
它是按预期工作,还是仅仅是一种(受欢迎的)意外行为?
例:
@Autowired
private UserRepo repo;
@Transactional
@PutMapping
public Long put(@RequestBody User user)
{
User u = repo.findOne(user.getId());
u.setName("Paul");
repo.save(u); // DO I NEED THIS LINE?
}
Run Code Online (Sandbox Code Playgroud)
我只是不确定它,所以也许有人可以对这个问题有所了解?