小编Mac*_*ski的帖子

Maven shade插件不排除清单签名文件

我正在使用maven shade插件为我的项目生成一个合并jar.jar是按预期生成的,当我尝试使用jar并运行它时,我得到了一个

java.lang.SecurityException:Manifest主要属性错误的签名文件摘要无效.

我搜索了上面的错误消息,许多人建议从META-INF目录中排除清单签名.因此,我已经包含了从目录中排除这些文件的步骤[我看到两个文件的名称JARSIGN_.RSAJARSIGN_.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)

java jar maven maven-shade-plugin

9
推荐指数
2
解决办法
2724
查看次数

@InjectMocks,构造函数或初始化块抛出异常

当我使用时@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. …

java junit unit-testing mockito

9
推荐指数
3
解决办法
2万
查看次数

如何使用 JPQL 从 SELECT 操作中获取第一行?

我有一个包含一些测试数据的数据库,我想使用它们的属性 DATE 对它们进行体面的排序,并且只使用所有测试中的第一个。我的意思是,相当于 JPQL 中 SQL 的 TOP 1。

谢谢你的帮助!

java spring jpa jpql spring-boot

9
推荐指数
4
解决办法
1万
查看次数

Hibernate持久化Map <String,String>而不引用另一个表

你能帮我用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是一个未映射的类?

java orm hibernate jpa hibernate-mapping

8
推荐指数
1
解决办法
3207
查看次数

Hibernate - 操作集合后加载

我们试图根据它包含的对象过滤\操作Persistent Collection(过滤掉特定的条目).

由于此操作将在包含不同集合的大量不同对象上执行,因此它必须尽可能通用.在HQL\SQL级别上过滤不是一种选择,因为它无法维护.这意味着必须在加载和初始化集合后执行.我们目前正在使用许多Hibernate事件来处理单个对象,所以我们尝试了监听InitializeCollectionEvent.但事实证明,我们的大多数集合都是使用HQL Fetch初始化的,因此不会为它们引发此事件.

我们可以使用其他任何Hibernate事件吗?

加载后处理集合的任何其他地方?

我们正在使用Hibernate 4.1.7.

java collections events hibernate event-listener

8
推荐指数
1
解决办法
320
查看次数

@ManyToMany三个表之间的关系

我的Spring JPA应用程序中有三个独立的实体 - User,Department,Role

我的数据库中有一个连接表来关联每个实体: USER_DEPARTMENT_ROLE

我的问题是,如何在我的实体类中定义这种关系?我是否必须@ManyToMany在每个单独的实体中定义关系?我知道如何定义两个表之间的这种关系,但是对于两个以上的表,我不知道从哪里开始.

任何帮助表示赞赏!

java orm spring jpa

8
推荐指数
1
解决办法
5034
查看次数

如何使用 JPA 获取 PessimisticLockException

我正在尝试 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

java jpa locking pessimistic-locking jpa-2.0

8
推荐指数
1
解决办法
1万
查看次数

java.lang.NoSuchMethodError:org.mockito.internal.runners.RunnerFactory.createStrict(Ljava/lang/Class;)Lorg/mockito/internal/runners/InternalRunner;

我正在使用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)

java groovy junit unit-testing mockito

8
推荐指数
3
解决办法
2万
查看次数

Mockito:通缉但未被援引

我有以下测试方法:

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)

java unit-testing mockito

7
推荐指数
1
解决办法
2万
查看次数

SpringBoot JPA在@Transactional上不需要.save()吗?

我有一个简短的问题:

我需要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)

我只是不确定它,所以也许有人可以对这个问题有所了解?

java spring jpa spring-data-jpa spring-boot

7
推荐指数
1
解决办法
4067
查看次数