小编mko*_*bit的帖子

为什么我从错误的ArrayList中删除一个元素?

我看到一些我无法理解的行为,并且想知道是否有人能够准确地解释这里发生了什么.这是我目前的代码.

public class MyClass {

    ArrayList<String> myList = new ArrayList<String>();

    public MyClass() {
        populate();
        removeData(myList);
    }

    private void populate() {
        myList.add("Some data");
        myList.add("Some more data");
        myList.add("Even more data");
    }

    private void removeData(ArrayList<String> list) {
        ArrayList<String> temp = new ArrayList<String>();
        temp = list;
        temp.remove("Some data");
    }
}
Run Code Online (Sandbox Code Playgroud)

现在由于某种原因,在我运行此代码后,数据将从ArrayList"myList"中删除.即使我只是从方法"removeData"中的变量中删除数据而不是从字段"myList"中删除数据,为什么会发生这种情况?

java arraylist

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

如何使用 java api 获取 AWS 帐户详细信息?不适用于 IAM 用户

我们有两个 AWS 账户。一个用于生产,另一个用于测试。我们需要区分我们正在运行的环境。我们可以看到一个简单的方法是获取帐户名称,一旦我们得到它就会非常简单。但是,我们不知道如何从 AWS 凭证或属性中获取它。有没有人知道如何使用 AWS 凭证获取账户信息?我考虑了账户权限、账户类型等的可能性,但我认为这不应该阻止我们获取账户名?

java amazon-web-services amazon-iam aws-sdk

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

无法通过启用密码身份验证将java客户端连接到cassandra

我的macbook上有一个默认的Datastax enterprise安装.我能够创建我的键空间并设置我的所有应用程序,包括使用solr.

我正在尝试开发一组步骤来为我们的开发群集启用密码身份验证.

到目前为止,我已更新/usr/local/dse/resources/cassandra/conf/cassandra.yaml并更改了以下属性:authenticator:PasswordAuthenticator authorizer:CassandraAuthorizer

我重新启动了节点,可以使用cqlsh登录并查询我的密钥空间:cqlsh -u cassandra -p cassandra

此时,我尝试在"会话"构建器上设置"凭据":主机为:cassandra.host = localhost

authenticator: PasswordAuthenticator
authorizer: CassandraAuthorizer
Run Code Online (Sandbox Code Playgroud)

但是我无法成功连接.所以我添加了一个新用户,并且能够再次通过cqlsh登录,但仍然无法连接Java驱动程序.

cqlsh -u cassandra -p cassandra
Run Code Online (Sandbox Code Playgroud)

我通过gradle为驱动程序使用'com.datastax.cassandra:cassandra-driver-dse:2.1.9'.

我总是得到以下堆栈跟踪,通过调试可以看到用户名和密码设置正确:

Session session = keyspaceToSessionMap.get(keyspace);
    if( session == null){
        Cluster cluster = Cluster.builder().addContactPoints(hosts)
                .withCredentials(username, password)
                //.withSSL()
                .build();
        session = cluster.connect(keyspace);
        keyspaceToSessionMap.put(keyspace,session);
    }
Run Code Online (Sandbox Code Playgroud)

这似乎应该很简单,但我很难过.

与cassandra驱动程序相关的依赖关系图包含以下内容:

cqlsh -u username -p password
Connected to LocalCluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.8.689 | DSE 4.7.3 | CQL spec 3.2.0 | Native protocol v3]
Run Code Online (Sandbox Code Playgroud)

我创建了以下测试通过.

Caused by: com.datastax.driver.core.exceptions.AuthenticationException: Authentication error …
Run Code Online (Sandbox Code Playgroud)

authentication cassandra datastax-java-driver datastax

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

带有超时的输入步骤,继续使用 Jenkins 管道的默认设置

所需 Jenkins 管道的描述:

  • 等待 1 分钟输入(“这是发布版本吗?是/否”)
    • 如果输入为是,则执行发布类型构建(带有构建号和部署)
    • 如果超时或用户说不,则进行测试构建
    • 如果用户按下 Abort 执行正常中止

我目前的代码是:

try {
    timeout(1) {
        input message: 'Do you want to release this build?',
              parameters: [[$class: 'BooleanParameterDefinition',
                            defaultValue: false,
                            description: 'Ticking this box will do a release',
                            name: 'Release']]
    }
} catch (err) {
    def hi = err.getCauses()
    echo "Exception thrown:\n ${hi}"

    echo err.getLocalizedMessage()
    echo err.getCause()
    echo err.toString()
    echo err.getClass().getName()
}
Run Code Online (Sandbox Code Playgroud)

但这给出了相同的(据我所知)行为并捕获了用户按下“中止”和输入超时的错误。

这是超时的输出:

[Pipeline] timeout
[Pipeline] {
[Pipeline] input
Input requested
[Pipeline] }
[Pipeline] // timeout
[Pipeline] echo
Exception …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-pipeline

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

Gradle合并Junit报告

gradle中有没有一种方法可以将junit xml报告合并到单个测试报告文件中。

当我们在ant中使用cp-suite执行IntegrationTestSuite.java时,只有一个junit报告。在gradle上创建了多个junit报告。

IntegrationTestSuite.java

@RunWith(Categories.class)
@Categories.IncludeCategory(IntegrationTests.class)
@Categories.ExcludeCategory(DebugJenkinsTests.class)
@Suite.SuiteClasses(AllTestSuite.class)
public class IntegrationTestSuite { /* nop */
}
Run Code Online (Sandbox Code Playgroud)

摘自 build.xml

<junit>
   <formatter type="xml" />
      <batchtest todir="${testreport.dir}">
          <fileset dir="${test-src.dir}">
              <include name="**/IntegrationTestSuite.java" />
          </fileset>
       </batchtest>
</junit>
Run Code Online (Sandbox Code Playgroud)

摘自 build.gradle

task integrationTestSandro(type: Test) {
    reports.html.enabled = false
    include '**/IntegrationTestSuite*'
    reports.junitXml.destination = "$buildDir/test-results/integration"
    maxHeapSize = testTaskMaxHeapSize
    jvmArgs testTaskJVMArgs
}
Run Code Online (Sandbox Code Playgroud)

junit gradle

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

使用 gradle 脚本 kotlin 配置 uploadArchives 任务

我想将我的库切换到 Gradle Script Kotlin,但我找不到配置 uploadArchive 任​​务的方法。

这是我想要翻译的 groovy kotlin 脚本:

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
                    authentication(userName: ossrhUsername, password: ossrhPassword)
            }

            snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
                authentication(userName: ossrhUsername, password: ossrhPassword)
            }

            pom.project {
                /* A lot of stuff... */
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我明白它应该从

task<Upload>("uploadArchives") {
    /* ??? */
}
Run Code Online (Sandbox Code Playgroud)

... 差不多就这样了!

AFAIU,在 Groovy 中,该Upload任务由MavenPlugin. 它在 Kotlin 中如何工作?

gradle-kotlin-dsl

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

确定文件夹的"存储ID"以使用CLI上载和列出凭据

我正在使用带有嵌套文件夹的CloudBees文件夹插件和用于管理不同管道作业的秘密的Credentials插件.假设我有一个像这样的Jenkins文件夹结构.

folder1/
    folder2/
        job1
Run Code Online (Sandbox Code Playgroud)

文件夹插件允许我将凭据域和凭据范围限定到文件夹,以便只有这些文件夹中的作业才能访问这些凭据.

我可以通过UI执行此操作,但我们经常轮换这些凭据并希望自动执行部分操作.

我们想到这样做的一种方法是使用Jenkins CLI.

这里的凭证插件提供了各种不同的命令.例如:

list-credentials - 列出特定商店中的凭据

java -jar jenkins-cli.jar -s http:// localhost:8080 / list-credentials STORE

列出特定商店中的凭据

商店:商店ID


list-credentials-context-resolvers - 列出凭据上下文解析器

java -jar jenkins-cli.jar -s http:// localhost:8080 / list-credentials-context-resolvers

列出凭据上下文解析器


list-credentials-providers - 列出凭据提供程序

java -jar jenkins-cli.jar -s http:// localhost:8080 / list-credentials-providers

列出凭据提供程序


Jenkins全局范围的存储由我查看源代码确定,它显示了它system::system::jenkins.

如果我运行一些命令,我​​可以开始提取一些信息:

? java -jar credential-management/build/jenkinsAutomation/Localhost/cli/jenkins-cli.jar -s http://localhost:8080 list-credentials-context-resolvers --username admin --password password
Run Code Online (Sandbox Code Playgroud)

结果是: CLI命令list-credentials-context-resolvers的结果

运行以下内容:

? java -jar credential-management/build/jenkinsAutomation/Localhost/cli/jenkins-cli.jar -s …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-plugins jenkins-pipeline

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

Gradle依赖json-simple错误

我是Gradle的新手,所以我正在尝试构建一个Java项目并且不确定依赖项.我从来没有让Gradle配置为能够进行我的测试或现在是一个jar文件来编译和运行.

我的build.gradle:

apply plugin: 'java'
apply plugin: 'maven'

repositories {
   jcenter()
}

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.25'
    compile 'org.json:json:20160212'
    testCompile 'junit:junit:4.12'
}
Run Code Online (Sandbox Code Playgroud)

这就是我在控制台上得到的声明,它没有看到我的导入:

 error: package org.json.simple does not exist
 import org.json.simple.JSONParser;
Run Code Online (Sandbox Code Playgroud)

这是我的班级:

import org.json.simple.*;
import java.io.*;
import java.util.*;
import java.lang.*;

public class FileLoader {
  @SuppressWarnings("unchecked")
  public static void main(String args[]) {
    JSONParser parser = new JSONParser();
    int count = 0;

    try {
      Object obj = parser.parse(new FileReader(
          "Consumers.json"));

      JSONObject jsonObject = (JSONObject) obj;
      JSONArray array = jsonObject.getJSONArray("people");
    } catch …
Run Code Online (Sandbox Code Playgroud)

junit dependencies gradle json-simple build.gradle

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

Jenkinsfile 管道错误:“预期一步”和“未定义部分”

谁能解释为什么我会收到以下错误,以及可能的解决方案是什么?

在耐久性级别运行:MAX_SURVIVABILITY org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:WorkflowScript:43:预期步骤@第 43 行,第 17 列。如果(isUnix()){ ^

WorkflowScript:71:未定义的部分“成功”@第 71 行,第 5 列。成功 { ^

WorkflowScript:78:未定义的部分“失败”@第 78 行,第 5 列。失败 { ^

WorkflowScript:16:工具类型“maven”没有配置“MAVEN_HOME”的安装 - 你的意思是“Maven M2”?@ 第 16 行,第 19 列。maven "MAVEN_HOME" ^

WorkflowScript:17:工具类型“jdk”没有配置“JAVA_HOME”的安装 - 您的意思是“null”吗?@第17行,第17列。jdk“JAVA_HOME”^

中的代码Jenkinsfile如下:

  pipeline {

        // agent defines where the pipeline will run.
        agent {
            // Here we define that we wish to run on the agent with the label SL202_win
            label "SL202_win"
        }

        // The tools directive allows you to automatically install tools …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-pipeline

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

使用 Jenkins 动态共享库进入管道

我不知道如何定义动态共享库,并将其使用到我的管道中:

myLib=library (identifier: 'lib@master', retriever: modernSCM(
    [$class: 'GitSCMSource',
        remote: 'https://mygit.orga.com/git/ORGA/Jenkins-libs.git',
        credentialsId: 'aaaaaaa-8f3f-4e3c-vvvvvvv-6c77351e7872',
        includes: '*',
        excludes: 'test'
    ]))

pipeline {

  agent {

    node(){
      label("linux&&!master")
    }
  }


  tools {
    jdk "JDK1.8.0_45"
    maven "MVN339"
  }
  stages{
    stage("test lib"){
      steps {
        script {

          myLib.a.b.c.Utils.sayHelloTo("Guillaume")
          log.info("test lib")
        }
      }

    }
  }
Run Code Online (Sandbox Code Playgroud)

在运行时它失败并显示:

java.lang.ClassNotFoundException: Utils
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
Run Code Online (Sandbox Code Playgroud)

有什么问题的想法吗?我在网上找不到有关动态共享库教程的任何信息。

编辑:添加库树:

src
--a
  --b
    --c
      Utils.groovy
Run Code Online (Sandbox Code Playgroud)

Utils.groovy内容:

java.lang.ClassNotFoundException: Utils
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-pipeline

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