小编aal*_*lku的帖子

如何根据目标环境在Maven中复制资源或其他资源?

我必须创建测试战争和生产战争,它将log4j.propertiesWEB-INF目录中有一个不同的文件.我有这些文件log4j.properties(测试战争)和dev.log4j.properties(生产enivorment).

如何将dev.log4j.properties文件复制到log4j.properties文件中进行生产战争?

resources maven-2

33
推荐指数
3
解决办法
5万
查看次数

"锁定"在Java堆栈跟踪中意味着什么?

例如,这是来自Tomcat服务器的堆栈跟踪:

    "RMI TCP Accept-0" daemon prio=10 tid=0x091a5800 nid=0x8f1 runnable [0x8b305000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
    - locked <0x911d3c30> (a java.net.SocksSocketImpl)
    at java.net.ServerSocket.implAccept(ServerSocket.java:462)
    at java.net.ServerSocket.accept(ServerSocket.java:430)
    at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:34)
    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
    at java.lang.Thread.run(Thread.java:662)
Run Code Online (Sandbox Code Playgroud)

我的猜测是"锁定"意味着CPU正在等待某种锁定.但是,如果是这种情况,为什么线程的状态列为RUNNABLE而不是BLOCKED?

谢谢.

java stack locked

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

如何在java 8中使用lambda表达式覆盖基类方法?

必须将Lambda表达式强制转换为功能接口.据我所知,他们无法扩展课程,但我想知道是否有办法获得类似的东西.

我有java.nio.file.SimpleFileVisitor<Path>基类,我想覆盖它的方法,但我希望在另一个方法中这样做.我可以用匿名类这样做:

public static void printContent(Path path) throws IOException {
    FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {
        @Override
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
                throws IOException {
            System.out.println(file);
            return super.visitFile(file, attrs);
        }
    };
    Files.walkFileTree(path, visitor);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在lambda的帮助下删除那些代码?

我认为lambda会是 (f) -> System.out.println(f);

我想忘记SimpleFileVisitor并使用默认方法创建一个等效的接口但是,我怎么能选择要覆盖的方法呢?我是否需要在没有默认实现的情况下保留我想覆盖的方法?在这种情况下,对于具有不同未实现方法的不同情况,我将需要几个接口.

谢谢.

java lambda java-8

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

使用java 8 lambda表达式打印有关错误的调试信息

我想使用静态方法作为setter helper来捕获异常并打印有关失败操作的调试信息.我不希望只有例外细节.我想显示正在设置的属性,以便详细帮助快速调试问题.我正在使用Java 8.

我应该如何提供或检测所设置的财产?

我希望删除示例中的"名称"字符串并获得相同的结果.

我知道我不能对提供的提供的setter方法使用反射,该方法转换为lambda表达式然后转换为BiConsumer.

我得到了这个,但需要提供属性名称.

/** setter helper method **/
private static <E, V> void set(E o, BiConsumer<E, V> setter,
        Supplier<V> valueSupplier, String propertyName) {
    try {
        setter.accept(o, valueSupplier.get());
    } catch (RuntimeException e) {
        throw new RuntimeException("Failed to set the value of " + propertyName, e);
    }
}
Run Code Online (Sandbox Code Playgroud)

例:

    Person p = new Person();
    Supplier<String> nameSupplier1 = () ->  "MyName";
    Supplier<String> nameSupplier2 = () -> { throw new RuntimeException(); };
    set(p, Person::setName, nameSupplier1, "name");
    System.out.println(p.getName()); // prints MyName …
Run Code Online (Sandbox Code Playgroud)

java reflection debugging lambda java-8

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

如何在Java 8中创建一个lambda表达式来定义toString?

我不希望有一个正常的lambda实现一个方法,并重新定义它的toString作为一个附加值.我希望lambda表达式只实现toString方法.我知道我的表达不是很好,但我相信你会用这个例子来理解我.

public class LambdaToStringTest {

    public interface ToStringInterface {
        public abstract String toString();
    }

    public static void main(String[] args) {
        print("TRACE: %s", (ToStringInterface)()->someComputation()); // <<-- ERROR: The target type of this expression must be a functional interface
    }

    private static void print(String format, Object... args) {
        System.out.println(String.format(format, args));
    }

}
Run Code Online (Sandbox Code Playgroud)

如果我更改方法的名称但它不会覆盖toString,则编译,因此print方法不会打印预期的内容.

这是尝试定义一个日志子系统,该子系统仅在需要时(当它真的要打印时)评估lambda,但与非lambda参数兼容.我知道其他方法来实现它,但我想知道为什么我不能这样做,如果有一个解决方法或我做错了什么,

java lambda java-8

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

java-8 CompletableFuture回调调用的延迟不合理

第一个回调电话很快,其余的延迟~50ms(非加法),我不知道为什么.

public class CfTest {

    final static long t0 = System.nanoTime();

    public static void main(String[] args) {
        CompletableFuture<Integer> cf1 = CompletableFuture.supplyAsync(()->{sleep(2000); return 100;});
        CompletableFuture<Long> cf2 = CompletableFuture.supplyAsync(()->{sleep(1000); return 1L;});
        CompletableFuture<Long> cfs = cf1.thenCombine(cf2, (a,b)->a+b);
        cfs.thenAccept(x->debug("a1. " + x)); // Async process, sync when complete
        cfs.thenAccept(x->debug("a2. " + x)); // Async process, sync when complete
        cfs.thenAcceptAsync(x->debug("a3. " + x)); // Async process, async after complete too
        debug("b. " + cfs.join()); // Wait and process
        debug("c. " + cfs.join()); // Wait and …
Run Code Online (Sandbox Code Playgroud)

java multithreading java-8 completable-future

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

如何在java中从右侧开始分割带有限制的字符串?

无限制拆分会拆分整个字符串,但如果设置了限制,它会向左分割到该限制.我怎么能在右边这样做呢?

"a.b.c".split("[.]", 2); // returns ["a", "b.c"]
Run Code Online (Sandbox Code Playgroud)

我想要

"a.b.c".splitRight("[.]", 2); // to return ["a.b", "c"]
Run Code Online (Sandbox Code Playgroud)

编辑:我想要一个通用的解决方案,就像分裂但反转,所以我添加一个更复杂的例子

我想要

"a(->)b(->)c(->)d".splitRight("\\(->\\)", 3); // to return ["a(->)b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)

java regex split

5
推荐指数
2
解决办法
894
查看次数

NumberFormat Parse问题

我对将字符串解析为Double时遇到的这种特殊"错误"感到困惑.

我已经设置了NumberFormat属性和符号.

传递带有15位和2位小数的字符串(例如str = "333333333333333,33")并使用Number num = NumberFormat.parse(str)结果解析它时省略数字.

num的实际值是3.333333333333333E14.

它似乎与Strings一起使用所有1,2和4但是......

谁能开导我?

干杯恩里科

java floating-accuracy dataformat decimalformat

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

如何解决这个编译错误?

当我写"new Triangle();"时,我得到这个错误"没有封闭的oppgave1类型的实例可访问".我需要帮助来解释一下我做错了什么(关于三角类).我是java的新开始.谢谢你的进步.

public static void main(String[] args) {

    Triangle T1 = new Triangle(1, 1, 1, "green", false);

    Scanner input = new Scanner(System.in);
    System.out.println("Enter three sides of the triangle: ");
    double side1 = input.nextInt();
    double side2 = input.nextInt();
    double side3 = input.nextInt();
    System.out.println("Enter a color: ");
    String color = input.nextLine();
    System.out.println("Enter true or false (to indicate triangle is filled or no): ");
    String isFilled = input.nextLine();
}

public class GeometricObject {
    //Data fields
    private String color = "blue";
    private boolean filled; …
Run Code Online (Sandbox Code Playgroud)

java

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