小编mko*_*bit的帖子

来自Nashorn的IllegalArgumentException异常 - 这是Java 8中的错误吗?

我正在使用Nashorn javascript引擎来评估在java应用程序中编写的所有服务器端javascript代码.为了提高性能,我在启动时使用spring初始化JsEngine并评估和缓存所有核心工具,如Mustache和一些常见的JS工具.然后每次屏幕渲染时,这个预先评估的JsEngine将用于评估特定于页面的JavaScript代码.它在某些时候工作正常,意味着它按预期呈现页面,但在我持续点击相同的URL时开始抛出异常

我无法找到问题的根本原因.

@Component
public class JsEngine {

    private ScriptEngine scriptEngine;

    @PostConstruct
    public void init() throws ScriptException, IOException{
        scriptEngine = new ScriptEngineManager().getEngineByName("nashorn");
        this.cacheAllCoreEngines();
        for(String key: defaultEngineSource.keySet()){
            scriptEngine.eval(defaultEngineSource.get(key));
        }
    }

    private void cacheAllCoreEngines()throws IOException{
       //read all core files such as mustache, etc. 
       defaultEngineSource.put("mustache",  FileUtil.readFileFromDisk("<actual path..>/mustache.js"));
    }

    public Object eval(String source) throws  ScriptException{
            .... code to handle exceptions 
            return scriptEngine.eval (source);
    }

}
Run Code Online (Sandbox Code Playgroud)

JsEngine如下所示,

public class AppRendererImpl implements  AppRenderer {

    @Autowired
    JsEngine jsEngine;

    public String render(){
     ....
     .... //Read source from disk …
Run Code Online (Sandbox Code Playgroud)

java spring java-8 nashorn

14
推荐指数
1
解决办法
1081
查看次数

如何在不使用java指定主键的情况下从DynamoDB表中获取所有项目?

我对亚马逊的AWS及其Java的API很新,所以我不确定什么是我尝试做的最有效的方法.基本上,我正在尝试设置一个数据库来存储项目的ID,它的状态以及存储桶.我遇到的问题是获取没有主键的所有用户的列表?有什么建议?

java amazon-dynamodb

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

在Jenkins管道中使用Groovy迭代地图是不可能的

我们正试图迭代Map,但没有任何成功.我们将问题简化为这个最小的例子:

def map = [
           'monday': 'mon',
           'tuesday': 'tue',
           ]
Run Code Online (Sandbox Code Playgroud)

如果我们尝试迭代:

map.each{ k, v -> println "${k}:${v}" }
Run Code Online (Sandbox Code Playgroud)

仅输出第一个条目: monday:mon


我们知道的替代方案甚至无法进入循环:

for (e in map)
{
    println "key = ${e.key}, value = ${e.value}"
}
Run Code Online (Sandbox Code Playgroud)

要么

for (Map.Entry<String, String> e: map.entrySet())
{
    println "key = ${e.key}, value = ${e.value}"
}
Run Code Online (Sandbox Code Playgroud)

失败,都只显示异常java.io.NotSerializableException: java.util.LinkedHashMap$Entry.(这可能与提出'真实'例外时发生的异常有关,阻止我们知道发生了什么).

我们正在使用最新的稳定jenkins(2.19.1),截至今天(2016/10/20)所有插件都是最新的.

是否有解决方案来迭代MapJenkins管道Groovy脚本中的元素?

groovy dictionary jenkins jenkins-pipeline

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

多序列的最长公共子序列

我已经做了一堆研究,找到M = 2序列的最长时间,但我想弄清楚如何为M≥2序列做到这一点

我被赋予N和M:M序列,具有N个独特元素.N是{1 - N}的集合.我已经考虑过动态编程方法,但我仍然对如何实际合并它感到困惑.

示例输入

5 3
5 3 4 1 2
2 5 4 3 1
5 2 3 1 4
Run Code Online (Sandbox Code Playgroud)

这里的最大序列可以看出来

5 3 1
Run Code Online (Sandbox Code Playgroud)

预期产出

Length = 3
Run Code Online (Sandbox Code Playgroud)

c algorithm dynamic-programming

13
推荐指数
1
解决办法
6148
查看次数

如何在执行Gradle任务的依赖项之前执行某些操作?

我有以下内容build.gradle:

task aoeu << {
    println "**************************** during"
}

tasks.publish.dependsOn(aoeu)

tasks.publish.doFirst {
    println "************************* before"
}

tasks.publish.doLast {
    println "************************* after"
}
Run Code Online (Sandbox Code Playgroud)

它的输出是:

:aoeu
**************************** during
:publish
************************* before
************************* after
Run Code Online (Sandbox Code Playgroud)

但我真正需要的是''在'之前'和之后'之间'发生'.如何才能做到这一点?"发布"应该仅仅取决于"之前"吗?如果是这样,我怎样才能保证它在其他依赖项之前发生?

gradle

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

什么是gradle中的"任务类型"?

我可以为gradle任务声明一个类型,这样做似乎继承了一些方法.例如:

task myCopyTask(type: Copy){
  from "foo"
  into "bar"
}
Run Code Online (Sandbox Code Playgroud)

所以,我认为myCopyTask是一个org.gradle.api.tasks.Copy班级的实例,是吗?如果我声明一个没有任何类型的任务,它是一个实例org.gradle.api.DefaultTask?对不起基本问题.我一直在阅读这个页面的gradle指南,但我不清楚type:到底是什么.

gradle

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

为什么@JsonUnwrapped不适用于列表?

我正在使用Jackson 2.1.0.鉴于:

public static final class GetCompanies
{
    private final List<URI> companies;

    /**
     * Creates a new GetCompanies.
     * <p/>
     * @param companies the list of available companies
     * @throws NullPointerException if companies is null
     */
    @JsonCreator
    public GetCompanies(@JsonUnwrapped @NotNull List<URI> companies)
    {
        Preconditions.checkNotNull(companies, "companies");

        this.companies = ImmutableList.copyOf(companies);
    }

    /**
     * @return the list of available companies
     */
    @JsonUnwrapped
    @SuppressWarnings("ReturnOfCollectionOrArrayField")
    public List<URI> getCompanies()
    {
        return companies;
    }
}
Run Code Online (Sandbox Code Playgroud)

当输入列表包含时http://test.com/,杰克逊生成:

{"companies":["http://test.com/"]}
Run Code Online (Sandbox Code Playgroud)

代替:

["http://test.com/"]
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

更新:有关相关讨论,请参阅https://github.com/FasterXML/jackson-core/issues/41.

jackson

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

在运行时更改Guice绑定

我希望能够在运行时更改Guice注入,以支持基于用户输入的多次注入.这就是我想要实现的目标:

public interface IDao {
    public int someMethod();
}

public class DaoEarth implements IDao {
    @Override
    public int someMethod(){ ... }
}

public class DaoMars implements IDao {
    @Override
    public int someMethod(){ ... }
}

public class MyClass {
    @Inject
    private IDao myDao;

    public int myMethod(String domain) {
        //If Domain == Earth, myDao should be of the type DaoEarth

        //If Domain == DaoMars, myDao should be of the type DaoMars
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在考虑编写自己的Provider,但我不知道如何使用该提供程序在运行时更改我的绑定.任何输入都是欢迎和赞赏:)!

更新 这是我目前提出的,它不像我想的那么漂亮,所以我仍然在寻找反馈

public class DomainProvider {
    @Inject …
Run Code Online (Sandbox Code Playgroud)

java architecture dependency-injection guice playframework-2.0

12
推荐指数
1
解决办法
6221
查看次数

DynamoDB JsonMarshaller无法反序列化对象列表

我有一个Java类,它是DynamoDB中表的数据模型.我想使用Dynamo中的DynamoDBMapperto saveloaditems.该班的一名成员是List<MyObject>.所以我用它JsonMarshaller<List<MyObject>>来序列化和反序列化这个字段.

该列表可以通过成功序列化JsonMarshaller.但是,当我尝试检索条目并读取列表时,它会抛出异常:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to MyObject.看起来JsonMarshaller将数据反序列化为LinkedHashMap而不是MyObject.我该怎样摆脱这个问题?

MCVE:

// Model.java
@DynamoDBTable(tableName = "...")
public class Model {
  private String id;
  private List<MyObject> objects;

  public Model(String id, List<MyObject> objects) {
    this.id = id;
    this.objects = objects;
  }

  @DynamoDBHashKey(attributeName = "id")
  public String getId() { return this.id; }
  public void setId(String id) { this.id = id; }

  @DynamoDBMarshalling(marshallerClass = ObjectListMarshaller.class)
  public …
Run Code Online (Sandbox Code Playgroud)

java jackson amazon-dynamodb

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

jenkins管道无法读取文件

我有一个简单的Jenkins文件,我想从工作区加载一些数据.我正在使用管道插件来利用存储库中的Jenkinsfile.构建是与匹配的Jenkins代理进行的.当我尝试使用"readFile"时,我收到以下消息:

java.io.FileNotFoundException:/path/to/jenkins/workspace/XXXXX/project/data.json(没有这样的文件或目录)

尝试从工作区加载Groovy文件时,我也收到相同的消息.

Jenkinsfile看起来像:

node('master') {
    stage "Start"
    echo "Starting"

    stage "Load File"
    def myJson = readFile "data.json"
}
Run Code Online (Sandbox Code Playgroud)

有什么想法我无法读取这些文件?

蒂姆,谢谢

jenkins jenkins-pipeline

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