我有一个非常奇怪的例外,我无法弄清楚原因.当我跑步时db status,我得到:
Caused by: liquibase.exception.ServiceNotFoundException: liquibase.exception.ServiceNotFoundException: liquibase.exception.ServiceNotFoundException: Could not find implementation of liquibase.logging.Logger
        at liquibase.logging.LogFactory.getLogger(LogFactory.java:19)
        at liquibase.logging.LogFactory.getLogger(LogFactory.java:30)
        at liquibase.database.DatabaseFactory.findCorrectDatabaseImplementation(DatabaseFactory.java:67)
        at liquibase.Liquibase.<init>(Liquibase.java:52)
        at com.yammer.dropwizard.migrations.ManagedLiquibase.<init>(ManagedLiquibase.java:47)
        at com.yammer.dropwizard.migrations.AbstractLiquibaseCommand.run(AbstractLiquibaseCommand.java:39)
        at com.yammer.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:58)
        at com.yammer.dropwizard.cli.Cli.run(Cli.java:53)
        at com.yammer.dropwizard.Service.run(Service.java:61)
        at com.derp.SomeService.main(SomeService.java:27)
        ... 6 more
Caused by: liquibase.exception.ServiceNotFoundException: liquibase.exception.ServiceNotFoundException: Could not find implementation of liquibase.logging.Logger
        at liquibase.servicelocator.ServiceLocator.newInstance(ServiceLocator.java:179)
        at liquibase.logging.LogFactory.getLogger(LogFactory.java:17)
        ... 15 more
Caused by: liquibase.exception.ServiceNotFoundException: Could not find implementation of liquibase.logging.Logger
        at liquibase.servicelocator.ServiceLocator.findClass(ServiceLocator.java:145)
        at liquibase.servicelocator.ServiceLocator.newInstance(ServiceLocator.java:177)
        ... 16 more
我不知道如何解决它.谷歌搜索,它似乎是一个有点间歇性的问题,在过去,在Liquibase中产生了错误修正.我没想到这会在这样的集成功能中发生.我正在使用dropwizard-core/hibernate/migrations 0.6.2.我正在使用com.smokejumperit.gradle.OneJarPlugin gradle插件来打包它,我认为它也负责类加载.
无论如何,我有点失落.有任何想法吗?有人见过这个吗?
ChronicleMap的GitHub肯定有关于ChronicleMap中 Multimaps 的免责声明:
纪事地图不是......
......没有二级索引.
多图.使用
ChronicleMap<K, Collection<V>>as multimap在技术上是可行的,但往往会导致问题......
不幸的是,这是我的一个用例,并且使用堆外存储(使用ChronicleMap)肯定是最简单的方法.
让我试着用披萨来解释我的问题.我有10万种不同的比萨饼.每个披萨都有一个ID和许多不同的浇头和面包皮.我有三种访问模式:
我可以用a轻松存放比萨饼ChronicleMap<UUID,Pizza>.但这只是一种访问模式.我不想遍历每一个披萨,找到具有匹配的顶部或外壳的披萨.所以,我想存储的东西像ChronicleMap<Topping,Collection<UUID>>和ChronicleMap<Crust,Collection<UUID>>.
然后,如果有人问我所有的意大利辣香肠披萨,我会在顶部的ChronicleMap中查找匹配的比萨饼的UUID,然后在主披萨地图中.
但上面引用的文档让我感到害怕.有谁知道这些事情经常导致的"问题"是什么?我为什么不这样做,即使它似乎对我有用?它是否与ChronicleMap如何存储序列化对象(特别是集合)有关?
针对潜在问题的一些补充说明:
这无疑是我做一些非常愚蠢的事情,但我看不到它.我试图在我的CSS中使用FontAwesome作为字体系列,但它似乎没有用.
使用最少的代码,我有:
<head>
    <link href="assets/css/font-awesome.css" rel="stylesheet">
    <style>
        body {
            font-family: FontAwesome;
        }
    </style>
</head>
<body>
    Test FontAwesome!
</body>
这显示为Times New Roman.
FontAwesome字体本身存储在assets/font /中,font-awesome.css具有以下@font-face定义:
@font-face {
  font-family: 'FontAwesome';
  src: url('../font/fontawesome-webfont.eot?v=3.0.1');
  src: url('../font/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'),
    url('../font/fontawesome-webfont.woff?v=3.0.1') format('woff'),
    url('../font/fontawesome-webfont.ttf?v=3.0.1') format('truetype');
  font-weight: normal;
  font-style: normal;
}
更改..to assets给出了一个明显的错误,它无法找到字体,所以我很确定相对路径是好的和花花公子.如果我将其更改为font-family: FontAwesome,Arial;,则使用Arial.显然,它找不到FontAwesome,我不知道为什么.
我无法将我的正文字体更改为FontAwesome的任何特殊原因?
我正在使用JPA EntityManager来执行某些操作,并且一个此类操作正在将实体替换为具有相同实体的另一个实体@Id.那么,给定一个oldObject和一个newObject,什么是最好的方法来删除oldObject并替换它newObject?
这里有一些不起作用的代码:
try
{
    entityManager.getTransaction().begin();
    entityManager.remove(oldObject);
    entityManager.persist(newObject);
    entityManager.getTransaction().commit();
}
catch (PersistenceException persistExc)
{
    entityManager.getTransaction().rollback();
    // do some stuff
}
此代码获得以下异常:
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.depressio.SomeObject
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1215)
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1148)
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1154)
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:678)
现在,它当然可行,如果不是删除实体,我只是更新其已更改的字段.但是,我只是被赋予了新的对象(UI通过REST将它扔给我),所以我真的不知道哪些字段已经改变,所以我必须更新每个字段.如果有大量的田地,那就不理想了.
我觉得我对如何正确删除有点困惑.我认为EntityManager.remove是正确的方式,但我猜不是.
提前致谢!
编辑1:我觉得我应该注意oldObject.id == newObject.id.在id通过产生@SequenceGenerator.如果标识符已经用生成器注释,我是否可以使用标识符来持久保存对象?
编辑2:根据这里最热门的答案,因为@Id已经定义了它并且它是一个自动生成的字段,Hibernate认为它已经分离了.现在我知道为什么我会得到例外,但解决方案仍然不清楚.
为此做一个简洁的标题很难.
无论如何,想象一下我有一个父类:
    public class Shape {
        public Dimensions getDimensions() {
            // Does some generic stuff.
        }
    }
我有一个派生类来覆盖getDimensions方法:
    public class Circle extends Shape {
        public Dimensions getDimensions() {
            // Does some stuff.
            super.getDimensions();
        }
    }
当我创建一个带有切入点的方面时Shape.getDimensions,切入点Circle.getDimensions被调用两次:一次用于Circle.getDimensions,然后一次调用super.getDimensions.
切入点看起来像这样: @Pointcut("execution(* Shape.getDimensions(..))")
我在建议中添加了一个黑客来检查声明类型的名称(使用JoinPoint.getSignature().getDeclaringType().getName()),但我发现它相当粗糙,感觉有点像黑客.我认为必须有一个更好的方法来做到这一点.
在那儿?
如果格式不是很好,请道歉.第一次在这里问一个问题(我通常可以找到答案).
即使在Backbone.Marionette.ItemView的onRender方法中,我也无法访问元素.
例如,我有:
模板:
<input type="text" id="searchBox">`
ItemView控件:
View = Backbone.Marionette.ItemView.extend
    template: searchTemplate
    onRender:
        @setTypeahead ['a', 'b', 'c', 'd']
    setTypeahead: (valueArray) ->
        console.log $('#searchBox')
        $('#searchBox').typeahead
            source: valueArray
出乎意料的是,记录到控制台的对象不包含input元素.选择器不起作用.这是为什么?
在木偶的GitHub上的微小的代码块内部的意见在这里提到了"操纵el在这里.它已经被呈现,是一部充满视图的HTML的,蓄势待发." 除非我误解了这一点,否则我认为该模板将被渲染并准备在ItemView的onRender函数内操作.
我在正确形成Backbone.Model.save调用方面遇到了一些麻烦.我正在调用的Web服务使用URL参数,但我在Javascript中拥有的是更改字段的对象.例如,我有对象{foo: 'bar', yar: 'har'},我希望Backbone.Model.save向URL发送补丁请求http://server/path/to/service?foo=bar&yar=har
听起来很简单吧?无论如何,它给了我一堆麻烦.这是我到目前为止所做的事情(这不起作用;我也有成功/错误回调,但我不认为这些对于这个问题很重要):
object = 
    foo: 'bar', 
    yar: 'har'
model.save object,
    patch: true
我也尝试过其他一些选择:
model.save object,
    patch: true
    emulateJSON: true
这将contentType设置为"application/x-www-form-urlencoded",这很好,但是Backbone.sync在ajax请求中发送的数据是:{model:"{"foo":"bar","yar" :"har"}".该服务得到了,并不知道如何处理"模型"属性.
model.save object,
    patch: true
    contentType: "application/x-www-form-urlencoded"
这只是编码object为字符串和东西options.data.同样,该服务不知道如何处理它.
关于如何使其符合我的服务规范的任何其他想法?我可以自己做ajax调用并自己更新模型(以及它所属的集合),但我真的不愿意这样做.对我有用的ajax请求是:
$.ajax
    url: "http://server/path/to/service"
    type: "PATCH"
    data: object
更新:我的两个早期选项不起作用的原因在Backbone.js本身很清楚:
// Ensure that we have the appropriate request data.
if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {
  params.contentType = 'application/json';
  params.data …我如何使用gradle插件为jetty提供环境变量?它在servlet中运行的一些代码需要设置一个特定的环境变量,但是我无法想出一个好的方法将它发送到jetty进程,就像你可以用JavaExec任务一样(通过environment方法).
也可以接受的是财产.例如,如果我要运行一些java,我会包含一个-Dproperty.name=blah将它发送给它的property.name属性.
我们可以为Test和JavaExec任务执行此操作...我们可以为JettyRun任务执行此操作吗?
我正在尝试使用自定义规则集文件运行PMD,但该规则集包含一个自定义类的规则.这个类存在于一个jar中,它不是作为依赖项引入的,而是一个zip文件(它是一个依赖项)并被解压缩.想象一下PMD规则类就在build/extralib/blah.jar.
如何仅在运行PMD时将其包含在我的类路径中?我尝试了什么,但没有奏效:
pmd {
    ruleSetFiles = files("build/utils/pmd-rules.xml")
    pmdClasspath = files("build/extralib")
}
要清楚,错误是:java.lang.ClassNotFoundException: com.package.for.pmd.CrazyRule.发生这种情况时运行pmdMain.
次要问题:Pmd和PmdExtension有什么区别?Pmd有pmdClasspath,但PmdExtension没有.当我加入时pmdClasspath,我得到了:
Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties.
Deprecated dynamic property: "pmdClasspath" on "org.gradle.api.plugins.quality.PmdExtension_Decorated@70221fc5", value: "file collection".
所以我猜它只坚持PmdExtension?作为Gradle新手,它有点令人困惑......
我想使用相同的数组运行一对查询Predicate:一个用于计算记录,一个用于获取某一页记录。对我来说,这似乎是一个非常正常的用例,所以一定有一个好的方法来做到这一点,但我还没有找到它。
这是获取实体的部分:
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
EntityType<ENTITY> entityType = entityManager.getMetamodel().entity(FooEntity.class);
CriteriaQuery<FooEntity> entityQuery = criteriaBuilder.createQuery(FooEntity.class);
Root<FooEntity> entityRoot = entityQuery.from(FooEntity.class);
// Use the criteria builder, root, and type to create some predicates.
Predicate[] predicates = createPredicates(criteriaBuilder, entityRoot, entityType );
// Fetch the entities.
entityQuery.select(entityRoot);
entityQuery.where(predicates);
List<FooEntity> entities = entityManager.createQuery(entityQuery)
    .setFirstResult(0) // Just get the first page
    .setMaxResults(50)
    .getResultList();
这有效。我们得到了我们想要的,谓词是正确的等等。
但是,创建另一个查询来使用相同谓词确定计数会失败。我尝试了两种不同的方法:
(1) 重复使用Root:
CriteriaQuery<Long> countQuery = criteriaBuilder.createQuery(Long.class);
countQuery.select(criteriaBuilder.count(entityRoot));
countQuery.where(predicates);
long count = entityManager.createQuery(countQuery).getSingleResult();
这不起作用并给了我java.lang.IllegalStateException: No criteria query roots …
这似乎是一个奇怪的问题.我想将LESS编译成CSS而不在我的本地gradle中安装插件.有几个gradle插件可以将LESS编译成CSS,这很棒,但我想在运行时编译和使用插件,而不是先安装它们.
这可能吗?如果有一个像CoffeeScript这样的标准插件,那就没什么大不了的了,但是LESS没有.我对Gradle很新,所以我不确定如何前进.显而易见的解决方案是血腥安装插件,但是给定一个我不能的约束,是否可以在运行时编译/使用它?
我正在使用JPA EntityManager + Hiberate,并且出现了一个非常重要的where子句.来自Hibernate的调试基本上显示:
select /* bunch of columns */
from some_table
where /* several filters */
  and 0=1
运行时会发生这种情况javax.persistence.Query.getResultList.该Query有数组Predicates的where子句中,但放心,0 = 1是不是其中之一.
我找不到该0=1部分包含在查询中的可能原因.有任何想法吗?我先找一个答案,但搜索引擎会忽略=.
我有命名空间foo和bar. 两者都有功能hello。
我正在尝试编写一个基于参数调用foo/hello或 的函数。bar/hello换句话说:
(defn say-hello [target-namespace]
  (if (= target-namespace "foo")
    (foo/hello)
    (bar/hello)
类似的事情,只是假设有 15 个命名空间,所以简单的 if-else 是不够的。最好以某种方式利用target-namespace并找出从中调用的函数。有没有好的方法可以做到这一点?
gradle ×3
hibernate ×3
java ×3
jpa ×3
ajax ×2
backbone.js ×2
javascript ×2
aspect ×1
aspectj ×1
chronicle ×1
clojure ×1
criteria-api ×1
css ×1
dropwizard ×1
font-awesome ×1
font-face ×1
jetty ×1
less ×1
liquibase ×1
marionette ×1
pmd ×1
pointcut ×1
super ×1