小编Jor*_*orn的帖子

H2内存数据库.表未找到

我有一个带有URL的H2数据库"jdbc:h2:test".我使用创建一个表CREATE TABLE PERSON (ID INT PRIMARY KEY, FIRSTNAME VARCHAR(64), LASTNAME VARCHAR(64));.然后我使用这个(空)表选择所有内容SELECT * FROM PERSON.到现在为止还挺好.

但是,如果我将URL更改为"jdbc:h2:mem:test",唯一的区别是数据库现在只在内存中,这给了我一个org.h2.jdbc.JdbcSQLException: Table "PERSON" not found; SQL statement: SELECT * FROM PERSON [42102-154].我可能在这里遗漏了一些简单的东西,但任何帮助都会受到赞赏.

java database h2

170
推荐指数
11
解决办法
13万
查看次数

有没有办法检查两个集合是否包含相同的元素,与订单无关?

我一直在寻找一种操作类似Arrays.equals(a1, a2)但忽略元素顺序的方法.我无法在Google Collections中找到它(类似的东西Iterables.elementsEqual(),但确实考虑到了排序)和JUnit(assertEquals()显然只是调用equals()Collection,这取决于Collection实现,而这不是我想要的)它会如果这样的方法会采用Iterables,那就最好了,但是我也可以简单地使用Collections这样的方法当然会考虑集合中的任何重复元素(所以它不能简单地测试containsAll()).

请注意,我不是在问如何实现这样的事情,我只是想知道是否有任何标准的Collections库都有它.

java collections equals

36
推荐指数
2
解决办法
4万
查看次数

HTML5通知无法在移动Chrome中使用

我正在使用HTML5通知API在Chrome或Firefox中通知用户.在桌面浏览器上,它可以工作.但是,在Chrome 42 for Android中,请求了权限,但未显示通知本身.

请求代码适用于所有设备:

if ('Notification' in window) {
  Notification.requestPermission();
}
Run Code Online (Sandbox Code Playgroud)

发送代码适用于桌面浏览器,但不适用于移动设备:

if ('Notification' in window) {
  new Notification('Notify you');
}
Run Code Online (Sandbox Code Playgroud)

javascript html5 notifications google-chrome web-notifications

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

如何从java.nio.Path获取路径字符串?

用更多信息重写了问题

我有一些Path使用相对路径创建对象的代码,如下所示:Paths.get("..", "folder").resolve("filename").后来,我想从它获取路径字符串"..\folder\filename"(我在Windows上,所以反斜杠).当我使用手动编译或从Eclipse运行此代码时,这很好.

但是,当我使用Maven运行它时,它不再起作用了.该toString()方法返回[.., folder, filename]而不是实际的路径字符串.使用path.normalize()没有帮助.使用path.toFile().getPath()确实返回我正在寻找的东西,但我觉得应该只使用nio.pathAPI 的解决方案.

java nio file

31
推荐指数
2
解决办法
4万
查看次数

Jasmine间谍重置呼叫不会返回

我正在使用Jasmine(2.2.0)间谍来查看是否调用了某个回调.

测试代码:

it('tests', function(done) {
  var spy = jasmine.createSpy('mySpy');
  objectUnderTest.someFunction(spy).then(function() {
    expect(spy).toHaveBeenCalled();
    done();
  });
});
Run Code Online (Sandbox Code Playgroud)

这按预期工作.但现在,我正在增加第二个级别:

it('tests deeper', function(done) {
  var spy = jasmine.createSpy('mySpy');
  objectUnderTest.someFunction(spy).then(function() {
    expect(spy).toHaveBeenCalled();
    spy.reset();
    return objectUnderTest.someFunction(spy);
  }).then(function() {
    expect(spy.toHaveBeenCalled());
    expect(spy.callCount).toBe(1);
    done();
  });
});
Run Code Online (Sandbox Code Playgroud)

此测试永远不会返回,因为显然done回调从未被调用过.如果我删除该行spy.reset(),测试确实完成,但显然在最后的期望中失败.然而,这个callCount领域似乎是undefined,而不是2.

javascript spy jasmine jasmine2.0

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

如何在伪类之前设置SVG图像的大小?

我想在CSS :before元素中显示图像.

.withimage:before {
  content: url(path/to/image.svg);
  display: block;
  height: 20px;
  width: 20px;
}
Run Code Online (Sandbox Code Playgroud)

问题是,heightwidth应用于元素,但SVG不会缩小.如何将尺寸应用于之前创建的实际元素?

Plnkr示例:https://plnkr.co/edit/UgryaObojs6PCU579oGY

css svg

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

将Mark Gradle源文件夹作为IntelliJ中的测试源

我在gradle中设置了集成测试源文件夹,如下所示:

subprojects {
    apply plugin: 'java'
    apply plugin: 'idea'

    sourceCompatibility = 1.8

    configurations {
        integrationTestCompile.extendsFrom testCompile
        integrationTestCompileOnly.extendsFrom integrationTestCompile
        integrationTestCompileOnly.extendsFrom testCompileOnly
        integrationTestRuntime.extendsFrom testRuntime
    }

    sourceSets {
        integrationTest {
            java {
                compileClasspath += main.output + test.output
                runtimeClasspath += main.output + test.output
                srcDir file('src/integrationTest/java')
            }
            resources.srcDir file('src/integrationTest/resources')
        }
    }

    task integrationTest(type:Test) {
        testClassesDir = sourceSets.integrationTest.output.classesDir
        classpath = sourceSets.integrationTest.runtimeClasspath
        outputs.upToDateWhen { false }
    }
}
Run Code Online (Sandbox Code Playgroud)

为了执行测试,这非常有效,但它会导致IntelliJ的检查出现问题,这可能会改变测试代码的行为.IntelliJ无法将源文件夹识别为测试源.

我尝试添加它们(内部subprojects):

idea {
    module {
        testSourceDirs += file('src/integrationTest/java')
    }
}
Run Code Online (Sandbox Code Playgroud)

但这根本没有帮助.我还尝试手动将它们标记为测试源(上下文菜单 - >将目录标记为 - >测试源根目录),但IntelliJ会快速覆盖它回到正常的源根目录.

如何在Gradle中正确配置? …

java integration-testing intellij-idea gradle

13
推荐指数
3
解决办法
6620
查看次数

将@Provides方法绑定为急切单例

我想使用注释@Provides为热切单例的方法进行绑定.我发现了错误216,这表明这是不可能的,但没有@Provides明确提到注释.

我目前有一个课程要求eager单身人士及时成为单身人士,但这不是一个非常好的解决方案.

public class LogicModule extends AbstractModule {
    @Override public void configure() {
        bind(SomeDep.class);
        bind(MyWorkaround.class).asEagerSingleton();
    }

    // cannot add eager requirement here
    @Provides @Singleton Logic createLogic(SomeDep dep) {
        return LogicCreator.create(dep);
    }

    private static class MyWorkaround {
        @Inject Logic logic;
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以更改评论附近会使变通方法类过时的内容吗?

java guice

11
推荐指数
1
解决办法
5350
查看次数

Mockito在创建模拟对象时抛出NullPointer

我有一个集成测试,其中一些设置是使用Guice完成的.我正在使用Mockito来模拟一些依赖项.到目前为止,这对我来说很好.我需要将PowerMock用于其他依赖项.现在Mockito正在NullPointerException加载一个自己的类:

java.lang.ExceptionInInitializerError
    at org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter.<init>(ConditionalStackTraceFilter.java:17)
    at org.mockito.exceptions.base.MockitoException.filterStackTrace(MockitoException.java:30)
    at org.mockito.exceptions.base.MockitoException.<init>(MockitoException.java:19)
    at org.mockito.exceptions.misusing.MockitoConfigurationException.<init>(MockitoConfigurationException.java:18)
    at org.mockito.internal.configuration.ClassPathLoader.loadImplementations(ClassPathLoader.java:145)
    at org.mockito.internal.configuration.ClassPathLoader.findPluginImplementation(ClassPathLoader.java:110)
    at org.mockito.internal.configuration.ClassPathLoader.findPlatformMockMaker(ClassPathLoader.java:106)
    at org.mockito.internal.configuration.ClassPathLoader.<clinit>(ClassPathLoader.java:59)
    at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:21)
    at org.mockito.internal.MockitoCore.<init>(MockitoCore.java:40)
    at org.mockito.Mockito.<clinit>(Mockito.java:932)
    <snip my test code and some Guice>
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.junit.internal.runners.ClassRoadie.runBefores(ClassRoadie.java:56)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:43)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:101)
    at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
    at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:53)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Caused by: java.lang.NullPointerException
    at org.mockito.internal.exceptions.stacktrace.StackTraceFilter.<clinit>(StackTraceFilter.java:21)
    ... 39 more
Run Code Online (Sandbox Code Playgroud)

(修剪)代码:

@PrepareForTest(MyModule.class)
@RunWith(PowerMockRunner.class)
public class MyTest …
Run Code Online (Sandbox Code Playgroud)

java mockito powermock

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

使用CriteriaBuilder一次删除多个对象

我正在尝试使用CriteriaBuilderAPI 通过一个查询删除一堆对象.我正在寻找像这样的选择:

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<T> query = criteriaBuilder.createQuery(entityClass);
Root<T> root = query.from(entityClass);
query.select(root).where(/*some condition*/);
return entityManager.createQuery(query).getResultList();
Run Code Online (Sandbox Code Playgroud)

但后来删除而不是选择.据我所知,没有removedelete方法CriteriaQuery.是否可以使用此API?

我当然可以执行select,然后调用entityManager.remove(object)每个结果,但这感觉非常低效.

java hibernate jpa criteria-api

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