小编Joe*_*ore的帖子

Java - 使用Condition和Lambda在Array中查找元素

简而言之,我有这个代码,我想使用条件和lambda获取数组的特定元素.代码将是这样的:

Preset[] presets = presetDALC.getList();
Preset preset = Arrays.stream(presets).select(x -> x.getName().equals("MyString"));
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用.在C#中会有类似的东西,但在Java中,我该怎么做?

java arrays lambda java-8 java-stream

21
推荐指数
3
解决办法
6万
查看次数

量角器3.1.1 + Angular2:无法找到元素的可测试性

我正在使用Protractor 3.1.1和Angular2运行一个简单的HelloWorld示例,但这件事一直告诉我无法找到元素的可测试性.我在网上搜索了有关错误的一些信息,但没有运气,这似乎是一个新的例外,没有那么多人面临过.

这是我正在使用的组件:

import {Component} from 'angular2/core';

@Component({
    selector: 'my-app',
    template: '<h1>My First Angular 2 App</h1>' +
    '<h2>{{myName}}</h2>' +
    '<input id="someId" [(ngModel)]="myName"/>'
})
export class AppComponent {
    myName = 'Joe';
}
Run Code Online (Sandbox Code Playgroud)

这是Protractor配置文件:

exports.config = {
  framework: 'jasmine',
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: [
    'e2e/*.js'
  ],
  baseUrl: 'http://localhost:3000'
};
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的量角器场景:

describe('angularjs homepage', function() {
    it('should say my name', function() {
        browser.get('/index.html');
        var greeting = element(by.id('someId'));
        expect(greeting.getAttribute('value')).toEqual('Joe');
    });
});
Run Code Online (Sandbox Code Playgroud)

网页正常加载模板HTML,但是Protractor认为生成的网页不是Angular网页,现在,为什么呢?显然,如果我检查生成的网页,它只是处理过的Angular代码的结果HTML,我做错了吗?

这是完整的错误:

Error: Failed: Error while waiting for Protractor to sync with the …
Run Code Online (Sandbox Code Playgroud)

javascript protractor angular

17
推荐指数
1
解决办法
4027
查看次数

es6-module-loader无法在Angular 6中找到@ angular/core

es6-module-loader在一个Angular 2项目中使用它,它非常适合TypeScript在Web浏览器中实时加载模块.现在,我正在将此项目升级到Angular 6,但是这里imports的加载模块的依赖关系不符合.例如:

declare var SystemLoader:any;

export class DemoClass {
  constructor() {
    var source = "export class Foo { " +
    "constructor() { console.log('Created the ES6 class foo!'); } " +
    "execMethod() { console.log('Executed method!') }" +
    "}";

     SystemLoader.module(source, {name: _name}).then(function (module: any) {
        module.Foo.prototype.execMethod();
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

以前的代码适用于Angular 6.它将加载模块Foo并在中打印这些行Console.但是如果我让模块有点复杂并添加import如下:

declare var SystemLoader:any;

export class DemoClass {
  constructor() {
    var source = …
Run Code Online (Sandbox Code Playgroud)

javascript es6-module-loader angular

17
推荐指数
1
解决办法
349
查看次数

在CDI容器中手动注册类

我有一组通过反射实例化的类,因此这些类不由CDI容器管理,并且上下文不进行注入.我的问题是,有没有办法在CDI上下文中注册这些类,所以这些类是由上下文管理的?

贝娄,我是如何创建课程的:

String clazz = "org.myorg.thisIsMyClass";
MyClass myClass = Class.forName(clazz).newInstance(); // myClass instance not managed by CDI
Run Code Online (Sandbox Code Playgroud)

如何制作myClassCDI容器管理的实例?

java cdi

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

将参数传递给@Inject Bean的实例

我使用CDI作为注入框架,但我发现它的使用有一些限制,这是其中之一.我正在尝试使用运行时值初始化bean实例的创建.例:

@RequestScoped
public class MyNumber {
   int number;

   public MyNumber(int number) {
      this.number = number;
   }

   public String toString() {
      return "Your number is: " + number;
   }
}

public class UseNumber {
   @Inject
   Instance<MyNumber> number;

   public void doStuff() {
      int a = 8;
      MyNumber mN = number.select(a).get(); // ?? - Obviously this does not work.

      System.out.print(mN); // Should print: "Your number is: 8"
   }
}
Run Code Online (Sandbox Code Playgroud)

请注意,"a"在示例中是常量,但实际上它是一个变量; 我澄清这一点,所以你不要发布一个答案,@Producer然后在构造函数中注入值MyNumber.

现在,任何人都知道我该怎么做?

java cdi

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

java反射创建字段/值hashmap

我需要创建一个实体中包含的字段/值的Hashmap,因此我可以使用它们在包含字段名称的String中替换它们.

我有这个代码:

public static String replaceTags(String message, Map<String, String> tags) ...
Run Code Online (Sandbox Code Playgroud)

它取代中找到的所有标签的消息在等效值标签,但为了建立映射表,我需要采取"任何"实体,并能创建实体的映射.那么,我怎么能做到这一点呢?获取我发送实体的例程,并返回包含所有字段和值的Map.

public static Map<String, String> getMapFromEntity(Object entity){
    Map<String, String> map = new HashMap<String, String>();

    ...?????

    return map;
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用反射,这是我发现完成这项工作的唯一方法,但还有其他方法可以实现相同的目标吗?我的意思是更有效的方法.

谢谢.

java reflection

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

Maven + Selenium + Jetty - 当Jetty关闭时ClassNotFoundException

我正在使用Maven,Selenium和Jetty进行集成测试.测试执行正常,但是当服务器关闭时,Jetty服务器会抛出一个java.lang.ClassNotFoundException: org.codehaus.groovy.runtime.dgm$371.这是完整的堆栈跟踪:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.main.SeleniumHelloWorldExampleIT
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.479 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- selenium-maven-plugin:2.3:stop-server (stop-selenium) @ MySampleWebApp ---
Stopping Selenium server...
00:28:55,976 INFO  [org.openqa.jetty.util.Credential] Checking Resource aliases
00:28:55.983 INFO - Command request: shutDownSeleniumServer[, ] on session null
00:28:55.989 INFO - Shutdown command received
00:28:55.992 INFO - Got result: OK on session null
00:28:55.994 …
Run Code Online (Sandbox Code Playgroud)

selenium integration-testing maven maven-jetty-plugin

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

mingw-64 - 安装包

我正在使用mingw_64CLioninWindows 10尝试在一个简单的项目中使用库(https://github.com/libtrading/libtrading),但该库需要在使用该库之前安装一些软件包。问题是,安装说明是针对Linux环境的,如下:

# Debian
$ apt-get install pkg-config libxml2-dev libglib2.0-dev libncurses5-dev \
    python-yaml libevent-dev

# Fedora
$ yum install zlib-devel libxml2-devel glib2-devel vim-common ncurses-devel \
    python-yaml libevent-devel

# OSX
$ brew install libevent glib pkgconfig
$ pip install pyyaml
Run Code Online (Sandbox Code Playgroud)

那么,如何在我的环境中安装这些先决mingw_64条件CLionWindows 10

c c++ mingw cmake mingw-w64

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

适用于地理位置不同的用户的日期操作/存储的Java最佳实践

我已经阅读了关于日期操作的所有其他Q/A,但它们似乎都没有给我满意的答案.

我有一个地理位置不同的用户项目,它Date在一些类和数据中使用.问题是我正在寻找一种有效的方法来操纵各自时区中不同用户的日期,大多数答案建议使用Joda库进行Date操作,这还不太明白,因为我还没有找到任何操作你不能用传统的Java做,所以如果有人可以解释我用Joda做什么不能用传统的Java做,那么我可以考虑使用它.

我终于开始使用System.currentTimeMillis()将日期保存到数据库(任何数据库)的方法.这样可以避免让我担心使用数据库存储日期的时区.如果我想查询数据库中的特定日期或日期范围,我会使用我想要查询的longDate来执行查询:

SELECT * FROM table1 WHERE date1>=1476653369000
Run Code Online (Sandbox Code Playgroud)

然后,在检索时,ResultSet我会使用请求数据的用户的时区long将从数据库检索到的值格式化为可读Date.

Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(resultSet.getLong(1));
cal.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta"));
Date myDate = cal.getTime();
Run Code Online (Sandbox Code Playgroud)

根据我读过的一些观点,有些人强调说存储System.currentTimeMillis()肯定不是最好的做法,然而,由于某种原因,他们都错过了说为什么它不值得推荐.我错过了什么吗?这会导致转换的性能问题Long->Date/ Date->Long?有没有使用时无法实现任何使用情况下Long,而不是Date在数据库?有人可以发布关于此的理由解释吗?

另一方面,假设我继续使用Date值来存储数据库中的日期,有没有办法避免在处理数据库时担心时区Date

提前致谢.

java database datetime date

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

JPA - 运行测试用例时未启用编织

我有一个使用 Eclipselink 2.5 的应用程序,在运行 Junit 测试用例时,我总是收到此警告:

[EL Warning]: metadata: 2013-08-19 01:14:05.142--ServerSession(14351551)--
Reverting the lazy setting on the OneToOne or ManyToOne attribute [currentTransit]
for the entity class [class ......persistent.entity.BPExecutionEntity] since
weaving was not enabled or did not occur.
Run Code Online (Sandbox Code Playgroud)

所以,我在 Ant 构建文件上写了一个“编织”任务,如下所示:

<target name="define.task" description="New task definition for EclipseLink static weaving">
    <taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask"/>
</target>
<target name="weaving" description="perform weaving" depends="define.task">
    <weave  source="D:\...\dist\${ant.project.name}.jar"
            target="D:\...\dist\woven-${ant.project.name}.jar"
            persistenceinfo="D:\...\lib\persistence.jar">
        <classpath>
        </classpath>
    </weave>
</target>
Run Code Online (Sandbox Code Playgroud)

好的,一切正常,当我编译代码时,它会生成一个大小为已编译 jar 一半大小的编织文件。但是,当我运行项目的测试时,我仍然收到相同的警告blah blah blah... since weaving was not enabled or did not …

java jpa eclipselink

5
推荐指数
1
解决办法
6182
查看次数