小编Sil*_*Nak的帖子

Java:Class.this

我有一个看起来像这样的Java程序.

public class LocalScreen {

   public void onMake() {
       aFuncCall(LocalScreen.this, oneString, twoString);
   }
}
Run Code Online (Sandbox Code Playgroud)

LocalScreen.this意味着什么aFuncCall

java class this

106
推荐指数
4
解决办法
3万
查看次数

使用Comparator接口和java 8 Streams进行排序

Parent是Child继承的类.这是由GrandChild继承的.每个类都包含子类的List(即Parent包含Child和Child的List包含GrandChild的List).每个类包含50个属性(attrib1-atrib50).getChildList()返回类型为Child的对象的arrayList getGrandChildList()返回GrandChild类型的对象的arrayList

设resultSet为Parent列表

List<Parent> resultSet
Run Code Online (Sandbox Code Playgroud)

现在我想根据一些属性对列表进行排序.例如,如果我想基于两个父属性(比如属性1和属性2)对resultSet进行排序,我使用此代码.

Comparator<Parent> byFirst = (e1, e2) -> e2.getAttrib1().compareTo(e1.getAttrib1());
Comparator<Parent> bySecond = (e1, e2) -> e1.getAttrib2().compareTo(e2.getAttrib2());

Comparator<Parent> byThird = byFirst.thenComparing(bySecond);


List<Parent> sortedList = resultSet.stream().sorted(byThird).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

现在我想根据Child类的属性1和GrandChild类的属性1对父列表进行排序.我应该如何排序呢.

java sorting comparator java-8 java-stream

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

"使用未经检查或不安全的操作"

为什么每次编译时都会出现"使用未经检查或不安全的操作"错误?代码有什么问题?我复制了本教程中完全相同的代码http://www.mkyong.com/java/json-simple-example-read-and-write-json/

import java.io.FileWriter;
import java.io.IOException;

import org.json.JSONArray;
import org.json.JSONObject;

public class JsonSimpleExample {
    public static void main(String[] args) {

        JSONObject obj = new JSONObject();
        obj.put("name", "mkyong.com");
        obj.put("age", new Integer(100));

        JSONArray list = new JSONArray();
        list.add("msg 1");
        list.add("msg 2");
        list.add("msg 3");

        obj.put("messages", list);

        try {
            FileWriter file = new FileWriter("c:\\test.json");
            file.write(obj.toJSONString());
            file.flush();
            file.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.print(obj);
    }
}
Run Code Online (Sandbox Code Playgroud)

java

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

Jenkins 声明性管道锁名称与变量

我有一个带锁的声明式詹金斯管道,例如

pipeline {
    environment {
        BRANCH = 'master'
    }
    agent any
    stages{
        stage('stage') {
            options {
                lock(resource: "lock-${env.BRANCH}")
            }
            steps {
                echo "Something"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我执行管道时,日志中显示

[Pipeline] lock
Trying to acquire lock on [lock-null]
Lock acquired on [lock-null]
[Pipeline] {
[Pipeline] echo
master
[Pipeline] }
Lock released on resource [lock-null]
Run Code Online (Sandbox Code Playgroud)

当评估 lock-name 时,环境变量似乎没有设置,但是当评估 echo 参数时,它被正确设置。

这个对一个有点相关的问题的答案给出了使用延迟评估的 GString 而不是普通 GString 的提示。尝试这个:

pipeline {
    environment {
        BRANCH = 'master'
    }
    agent any
    stages{
        stage('stage') {
            options {
                lock(resource: "lock-${->env.BRANCH}" …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-pipeline

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

更新 Spring BOOT-INF/lib jar

我正在尝试更新 中的一个 jar ,这个剩余的 jar 基本上是一个 SpringBoot Jar,并且具有解压它时rest-xxxx.jar的文件夹结构。BOOT-INF/lib/<dependencies.jars>

现在我想替换 this 中的依赖项 jar rest-xxxx.jar,所以我使用了以下命令:

jar uf rest-xxxx.jar BOOT-INF/lib/new-version-jar-same-name.jar
Run Code Online (Sandbox Code Playgroud)

我在启动过程中如何遇到错误:

线程“main”中出现异常 java.lang.IllegalStateException:无法打开嵌套条目“BOOT-INF/lib/new-version-jar-same-name.jar”。它已被压缩,嵌套的 jar 文件必须在不压缩的情况下存储。请检查用于创建可执行 jar 文件的机制

我注意到 jar 命令有一个0选项可以避免压缩,所以我这样做了:

jar u0f rest-xxxx.jar BOOT-INF/lib/new-version-jar-same-name.jar
Run Code Online (Sandbox Code Playgroud)

但后来我遇到了类似的压缩问题,如下所示:

线程“main”中出现异常 java.lang.IllegalStateException:无法打开嵌套条目“BOOT-INF/lib/new-version-jar-same-name.jar/META-INF/MANIFEST.MF”。它已被压缩,嵌套的 jar 文件必须在不压缩的情况下存储。请检查用于创建可执行 jar 文件的机制

当我需要替换给定 springboot jar 中的依赖 jar 时,我该怎么办?

请注意:我知道最佳实践是从更新的 pom.xml 构建,我们的限制是我们目前无法获得正确版本的源代码,因此我们正在尝试修补现有的 springboot jar 而不是重建它。

java jar package spring-boot

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

将 stdout 和 stderr 重定向到文件和控制台

在PowerShell脚本中,我所说的计划,并希望重定向stdoutstderr不同的文件,同时还显示两者在控制台输出。所以基本上,我想要

stdout -> stdout
stdout -> out.log
stderr -> stderr
stderr -> err.log
Run Code Online (Sandbox Code Playgroud)

到目前为止,我想出了这个代码,但不幸的是它只满足要求 1、2 和 4。Stderr 没有打印在屏幕上。

& program 2>"err.log" | Tee-Object -FilePath "out.log" -Append | Write-Host
Run Code Online (Sandbox Code Playgroud)

我怎样才能打印stderr到控制台?由于写入 tostderr产生红色字体,我不想重定向stderrstdout,因为那样我会失去错误的视觉印象。

powershell io-redirection

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

React Router 不渲染组件

我想创建一个带有登录名的 React 应用程序。为了维护用户状态,我想使用React 16.3 中引入的Context API 。在实现登录路由时,我遵循了React Router 文档中的示例

下面的源代码(正如我希望的那样)是我的问题的一个非常简化的最小示例。当我localhost:3000/protected在浏览器中打开时,URL 正确更改为localhost:3000/login,但未显示该组件。该render()方法似乎没有被调用。

我如何说服 React 渲染我的登录组件?

这是我的源代码。

应用程序.js

import React, {Component} from 'react';
import {
    BrowserRouter as Router,
    Route
} from 'react-router-dom'
import Login from "./Login";
import Protected from "./Protected";
import ProtectedRoute from "./ProtectedRoute";
import UserContext from "./UserContext";

export default class App extends Component {
    render() {
        return (
            <Router>
                <UserContext.Provider value={false}>
                    <div>
                        <ProtectedRoute path='/protected' component={Protected}/>
                        <Route path='/login' component={Login}/>
                    </div>
                </UserContext.Provider>
            </Router> …
Run Code Online (Sandbox Code Playgroud)

reactjs react-router react-router-dom

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

Tycho无法解析对其他片段的片段依赖性

我想org.eclipse.swt为片段创建一个扩展.我创建了一个swt.extension包含以下MANIFEST.MF 的包:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Extension
Bundle-SymbolicName: swt.extension
Bundle-Version: 1.0.0.qualifier
Fragment-Host: org.eclipse.swt;bundle-version="3.102.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Run Code Online (Sandbox Code Playgroud)

另外,我创建了一个从SWT扩展接口的接口:

public interface IExtendedStyleTextContent extends org.eclipse.swt.custom.StyledTextContent {
}
Run Code Online (Sandbox Code Playgroud)

当我使用tycho(mvn clean install)构建项目时,会发生以下错误:

1. ERROR in C:\<path>\tycho-fragment-to-fragment-dependency\swt.extension\src\org\example\tycho_example\IExtendedStyleTextContent.java (at line 3)

public interface IExtendedStyleTextContent extends org.eclipse.swt.custom.StyledTextContent {

                                                   ^^^^^^^^^^^

org.eclipse cannot be resolved to a type
Run Code Online (Sandbox Code Playgroud)

似乎tycho只解析了org.eclipse.swt jar.这是一个主机包,它不包含任何类.实际的实现是在org.eclipse.swt.win32.win32.x86_64片段包中.当tycho-compiler-plugin编译项目时,看起来这个bundle不在classpath上.

这是第谷的错误吗?他们有任何变通方法吗?

我把所有资源放在GitHub上:https://github.com/orionll/tycho-fragment-to-fragment-dependency

我使用maven 3.1.0

osgi tycho maven osgi-fragment

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

CucumberOptions 无法解析为类型

在我的 testrunner 类中,在使用时@CucumberOptions,我收到一条错误消息,指出“CucumberOptions 无法解析为类型”。我正在使用最新版本的 eclipse 黄瓜依赖项。我已经尝试了所有可能的方法,通过安装和卸载 eclipse,通过降低黄瓜依赖版本。

我的跑步课程是:

import org.junit.runner.RunWith;
import cucumber.api.junit.*;
import cucumber.api.testng.AbstractTestNGCucumberTests;    

@RunWith(Cucumber.class)
@CucumberOptions(
        // format = {"pretty","html:target/html/" } ,
        features = "src/test/resources", glue = "com.cucumber.bhsibase.party.tests")
public class TestRunner extends AbstractTestNGCucumberTests {
}
Run Code Online (Sandbox Code Playgroud)

还有我的 POM.xml :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>BHSI_BASE</groupId>
    <artifactId>BHSI_BASE</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>BHSI_BASE</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <!-- dependencies added for testng start -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.11</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/info.cukes/cucumber-testng -->
        <dependency>
            <groupId>info.cukes</groupId> …
Run Code Online (Sandbox Code Playgroud)

java selenium cucumber maven

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

PowerMockito.whenNew无法正常工作

嗨伙计们我是PowerMockito的新手,我想在PoweMockito中使用whenNew并且它不适合我,有人可以帮我解决这个问题吗?

下面是我用来测试Class2的Test方法,我使用PowerMockito.whenNew来模拟Class2中的mockTestMethod并将String Value作为"MOCKED VALUE"返回但是没有发生,实际上该方法正在执行并输出为"PassedString" ".如果我没有错,那么Output应该将字符串作为"Inside Class2方法MOCKED VALUE",但我得到输出为"Inside Class2方法PassedString".请帮助我解决这个问题,在此先感谢.

以下是我正在处理的完整程序

package com.hpe.testing2;

public class Class2 {

    public void testingMethod(){
        Class1 class1 = new Class1();
        String result = class1.mockTestMethod("PassedString");
        System.out.println("Inside Class2 method " + result);
    }

}

package com.hpe.testing2;

public class Class1 {

    public String mockTestMethod(String str2){
        String str1="SomeString";
        str1 = str2;
        System.out.println("Inside MockTest Method " + str1);
        return str1;
    }

}
Run Code Online (Sandbox Code Playgroud)

class2在内部调用Class1 mockTestMethod,如上所示.

package com.hpe.testing2;


import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;


@RunWith(PowerMockRunner.class)
@PrepareForTest({Class2.class,Class1.class})
public class …
Run Code Online (Sandbox Code Playgroud)

java junit powermockito

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