小编Sto*_*wke的帖子

在jgit中配置known_hosts

使用带有gitolite的jgit进行源代码控制,我有一个应用程序可以根据命令生成某些代码,我们希望将其提交给源代码控制.目标是快速前进,提交新代码,然后推送它.

我有以下方法:

private void commitToGitRepository(String updateComment, Config config)
      throws IOException, NoFilepatternException, GitAPIException
{
   if(git == null)
   {
      git = Git.open(new File(config.getDpuCheckoutDir()));
   }
   PullCommand pull = git.pull();
   pull.call();
}
Run Code Online (Sandbox Code Playgroud)

此方法在pull.call()方法调用上失败,但有以下异常:

com.jcraft.jsch.JSchException: UnknownHostKey: www.somehost.com. RSA key fingerprint is 9d:92:a9:c5:5d:cb:5f:dc:57:ff:38:7e:34:31:fe:75
at com.jcraft.jsch.Session.checkHost(Session.java:748)
at com.jcraft.jsch.Session.connect(Session.java:319)
at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:116)
at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:121)
at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:248)
at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:147)
at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:136)
at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:122)
at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1104)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:128)
at org.eclipse.jgit.api.PullCommand.call(PullCommand.java:245)
at net.intellidata.dpu.controller.schema.EntityMappingController.commitToGitRepository(EntityMappingController.java:149)
... (truncated where it meets my code)
Run Code Online (Sandbox Code Playgroud)

我读这个的方式,似乎它没有找到我的known_hosts文件user_home/.git.但是,我一直在寻找一个小时,我没有找到一种方法来配置JGit告诉JSch在哪里查找known_hosts文件.

建议?我知道origin的条目存在于我的known_hosts文件中

java git ssh jsch jgit

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

在Typescript中导入Java对象

对于downvoters来说 - 这是一个合理的问题.在假设我混淆了我的语言之前,请花时间检查它,就像某种编程新手一样!

我需要知道是否可以在Typescript脚本中导入Java对象(特别是枚举类).

我用谷歌搜索但没有找到任何东西.

ErrorCodeAuthority用于从我们的服务中为每个已知错误抛出自定义的标准化错误,其中包含在一个地方定义的设置消息(某些参数化,某些参数化,某些不是),http状态代码等.

在我们的JavaScript代码中,我们有

var JavaErrorCodeAuthority = Java.type("com.domain.ErrorCodeAuthority");
Run Code Online (Sandbox Code Playgroud)

是不是可以在打字稿中做同样的事情?

根据以下答案进行编辑

我宣布了以下内容:

declare module Java {
    export enum ErrorCodeAuthority {
        ENTITY_NOT_FOUND,
        HTTP_VERB_NOT_SUPPORTED,
        BAD_REQUEST,
        //...
    }
    export function type(arg: "com.domain.ErrorCodeAuthority"): ErrorCodeAuthority;
    export function type(arg: string): any;
}
var JavaErrorCodeAuthority = Java.type("com.domain.ErrorCodeAuthority");
Run Code Online (Sandbox Code Playgroud)

我试图使用新类型如下:

export class HttpFailResult extends HttpResult {
    constructor(public errorCode : Java.ErrorCodeAuthority, public userParams? : UserParam[]) {
        super(errorCode.httpStatus.value(), errorCode.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用grunt编译为js时,我收到以下错误:

error TS2339: Property 'httpStatus' does not exist on type 'ErrorCodeAuthority'.
Run Code Online (Sandbox Code Playgroud)

(作为参考,super HttpResult是一个包含number http code and …

javascript java typescript nashorn

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

Gradle:创建一个没有类,只有资源的 jar

我正在尝试使用以下模式创建一组四个 jar(每个 jar 都有自己的项目。 helpRootDir在所有四个 jar 之间共享。如果有人知道一种方法来完成所有四个任务,那就太棒了)

def helpRootDir = 'runtime/datafiles/help/'
project(':schedwinclihelp') {
    def helpDir = 'schedwincli'

    //Include no classes.  This is strictly a resource jar
    sourceSets.main.java {
        exclude 'com/**'
    }

    jar {
        from '${helpRootDir}/${helpDir}'
        include '**/*.*'
    }

}
Run Code Online (Sandbox Code Playgroud)

无论如何,正如您从上面看到的,我不希望 jar 中包含任何类,这很有效。不幸的是,我实际上得到的只是一个 MANIFEST.MF 文件。没有添加 jar 定义中的任何文件。我希望将完整的文件树${helpRootDir}/${helpDir}添加到 jar 的根目录中。我该如何实现?

java jar gradle build.gradle

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

Gradle:ear deploymentDescriptor - 从application.xml中排除模块

我的gradle构建文件中有以下内容.我的问题是log4j.properties被添加为application.xml中的ejb模块,尽管我尝试按照此处的线程从xml中删除它:

http://forums.gradle.org/gradle/topics/ear_plugin_inserts_unneeded_ejb_modules_in_the_application_xml_ear_descriptor

apply plugin: 'ear'

ear {

    deploymentDescriptor {
        applicationName = 'ourapp'
        displayName = 'ourapp'
        initializeInOrder = true

            //This doesn't work:
        withXml { xml ->
            xml.asNode().module.removeAll { it.ejb.text.equals('log4j.properties') }
        }
    }
    //Add log4j.properties to ear root
    from('../../lib/log4j.properties', 'log4jProperties')
}


dependencies
{
    deploy 'javax:javax.jnlp:1.2'
    deploy 'com.oracle:ojdbc6:1.6.0'

    earlib 'org.apache:apache-log4j:1.2.16'
}
Run Code Online (Sandbox Code Playgroud)

如何让gradle从application.xml中排除log4j.properties?

编辑

这导致我的应用程序服务器(JBoss 6.0.0)无法启动,因为它不知道如何处理log4j.properties.我可以通过手动创建我的application.xml文件来解决它,但这使得必须维护另一件事.欢迎任何帮助!

ear gradle build.gradle

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

Gradle Incremental Builds - 可以忽略最新检查中的清单?

主题几乎问了这个问题,但是对于更多细节,我在以下内容中有以下内容build.gradle:

jar {
    manifest {
        attributes("Built-By": "Gradle")
        attributes("Build-Version": version)
        attributes("Main-Class": "somePackage.SomeClass")
    }
}
Run Code Online (Sandbox Code Playgroud)

构建时,由于清单是自动生成的,因此jar即使代码中没有任何更改,它也始终认为任务已过期.

理想情况下,我希望能够检查版本是否与上一次构建相同.如果是,如果以前的任务依赖(compileJava等)都是UP-TO-DATE,我也希望jar任务报告UP-TO-DATE.

如果失败了,如果我能让jar任务完全忽略清单文件,我会很高兴.

对于一个单独的jar任务来说,这不是什么大问题,但是只要一个jar报告它不是UP-TO-DATE,所有依赖它的任务就必须重新编译,重新jar等等,这使得构建需要比他们实际需要的方式更长的时间.并且由于我的依赖路径中的第一个jar任务报告它由于明显问题而不是最新的,这意味着整个事情被迫重新编译/重新jar /重新战争/重新/等等每一个-single-time,我们在这里谈论几十万行代码.

无论如何,如果有人知道如何解决这个小烦恼,我将不胜感激

编辑

我还有一个依赖于jar任务的zip任务:

task zip(type:Zip, dependsOn:jar) {
    from jar
    include jar.archiveName
    from '.'
    include 'run.bat'
}
Run Code Online (Sandbox Code Playgroud)

运行此命令:

gradlew :myProject:zip -Pversion=1.0
Run Code Online (Sandbox Code Playgroud)

我每次都会得到以下输出,即使我连续两次运行它而没有任何变化:

:myProject:compileJava UP-TO-DATE
:myProject:processResources UP-TO-DATE
:myProject:classes UP-TO-DATE
:myProject:jar
:myProject:zip
Run Code Online (Sandbox Code Playgroud)

java jar gradle build.gradle

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

在注解处理阶段获取kotlin fun参数的默认值

背景:我有一个注释处理器,它通过扫描控制器上的弹簧注释来构建改造接口。我已将其设置为在基于 kotlin 或基于 Java 的 Spring 应用程序中工作,并且它可以生成 kotlin 或 Java 改造客户端接口。

问题:当针对基于 kotlin 的 spring 应用程序运行它时,有没有办法在控制器函数上获取默认值,无论是反射还是通过其他方式?

例如控制器功能看起来像

@RequestMapping("/foo")
fun getSomething(@RequestParameter foo: String = "bar") {
...

}
Run Code Online (Sandbox Code Playgroud)

我希望能够生成一个看起来像的改造接口方法

fun getSomething(@Header foo: String = "bar")
Run Code Online (Sandbox Code Playgroud)

我知道引擎盖下的编译器实际上为 jvm 创建了多个覆盖方法:https : //discuss.kotlinlang.org/t/retrieve-default-parameter-value-via-reflection/7314

但我想知道是否有办法在注释处理阶段捕获这些默认值,或者我是否只需要在生成的 kotlin 客户端中没有默认值。

长话短说 - 是否有一种解决方法可以让我捕获这些默认值?

annotation-processing kotlin

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

在MySQL中,如何在字符串值为"true"时插入1,在为false时插入0,同时保留空值

我使用的是INSERT查询SELECT从纯文本数据库为多个查询友好的数据库秒.为了避免与不必要的信息混淆,以下内容进行了简化,如果我为了清晰起见而进行了简化,请告诉我,我会修改.

来源数据如下:


    |    id (integer)    |    SomeCol (varchar)    |    BooleanCol (varchar)   |    
    ----------------------------------------------------------------------------
    |    1               |    'String Data'        |    'true'                 |
    |    2               |    'Other Data'         |    'false'                |
Run Code Online (Sandbox Code Playgroud)

我的INSERT查询后目标表需要如下所示:


    |    id (integer)    |    SomeCol (varchar)    |    BooleanCol (tinyint(1))   |    
    -------------------------------------------------------------------------------
    |    1               |    'String Data'        |    1                         |
    |    2               |    'Other Data'         |    0                         |
Run Code Online (Sandbox Code Playgroud)

我正在寻找一些或多或少会像这样工作的东西,借用java语法:


    INSERT INTO target(SomeCol, BooleanCol) 
    SELECT SomeCol, (BooleanCol IS NOT NULL ? (BooleanCol == 'true' ? 1 …
Run Code Online (Sandbox Code Playgroud)

mysql boolean string-conversion insert-into

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

增量Gradle Build没有说UP-TO-DATE

作为增量构建系统的Gradle应该检测何时没有对源或输出进行任何更改,并在适当时跳过任务以节省构建时间.

但是,在我的构建中,后续执行gradle任务,两者之间没有任何变化,这个增量功能不起作用.compileJava,jar等正在执行每个构建,而不仅仅是在进行了更改时.

我们的构建非常复杂(从一个非常古老,非常凌乱的ant build转换为gradle),所以我只是展示一个小片段:

buildDir = 'build-server'
jar {
    sourceSets.main.java.srcDirs = ['src', 
                '../otherProject/src']

    sourceSets.main.java {

        include 'com/ourCompany/pkgone/allocation/**'
        include 'com/ourCompany/pkgone/authenticationmngr/**'
                      ...

        //Excludes from all VOBs
        exclude 'com/ourCompany/pkgtwo/polling/**'
    }

    sourceSets.main.resources.srcDirs = ['cotsConfig/ejbconfig']
    sourceSets.main.resources {
        include 'META-INF/**'
    }

}

dependencies {
    compile project(':common')
}
Run Code Online (Sandbox Code Playgroud)

连续gradle jar两次在此项目上运行会产生以下输出:

P:\Project>gradlew jar
:common:compileJava
:common:processResources UP-TO-DATE
:common:classes
:common:jar
:clnt:compileJava
:clnt:processResources UP-TO-DATE
:clnt:classes
:clnt:jar

BUILD SUCCESSFUL

Total time: 1 mins 46.802 secs
P:\Project>gradlew jar
:common:compileJava
:common:processResources UP-TO-DATE
:common:classes
:common:jar
:clnt:compileJava
:clnt:processResources UP-TO-DATE
:clnt:classes
:clnt:jar

BUILD SUCCESSFUL
Run Code Online (Sandbox Code Playgroud)

我的问题是,我可以做些什么来阻止最新的检测无法正常工作?它可能与我复杂的构建路径有关吗?

java gradle build.gradle

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

如何将Object从java类传递给另一个java类

我在java中创建了一个类的实例,如下所示:

ABC ab = new ABC();

我想ab在另一堂课中访问这个瞬间XYZ.如何在XYZ类中使用此对象?

java

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

如何在Ant中获取具有依赖项*的构建目标*列表?

我发现了这个问题:

如何获取Ant中的构建目标列表?

我想知道些什么:有没有办法让目标清单,连同他们的depends-on价值观?我们有一个大的build.xml文件,它当前编写的方式是否存在描述并不能真正告诉我目标是主目标还是"其他"目标.

运行ant 1.8.1,这是初步的尽职调查,因为我准备升级到Gradle,所以我需要弄清楚哪些目标确实是"高级"目标,哪些是"支持"目标.

注意我在锁定的环境中工作,因此不能选择下载第三方软件或ant扩展.

附加说明如果在ant中无法达到这种详细程度,那么这也是一个有效的答案

ant

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

Do-While循环在Java中无法正常运行

所以这应该继续循环,直到用户点击"ENTER"或数组已填满.但在输入数组中的第一个元素后,它退出循环.

do 
{
    System.out.print("Enter name (or <ENTER> if done): ");
    names[index] = kb.nextLine();
    if(! (names[index].equals(""))) 
    {

        System.out.print("Enter phone number: ");
        phone[index] = kb.nextLine();

        System.out.print("Enter email address: ");
        email[index] = kb.nextLine();

        index++;
        break;
    }
} while ( ! (names[index - 1].equals("")) && index < SIZE);
Run Code Online (Sandbox Code Playgroud)

更正

do
{
        System.out.print("Enter name (or <ENTER> if done): ");
        names[index] = kb.nextLine();

        if(! (names[index].equals("")))
            {

            System.out.print("Enter phone number: ");
            phone[index] = kb.nextLine();

            System.out.print("Enter email address: ");
            email[index] = kb.nextLine();

            }   
        index++;

    } while ( ! …
Run Code Online (Sandbox Code Playgroud)

java arrays do-while

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

在枚举中使用整数值和字符串标识符

所以我目前有两个枚举:

public enum AuthorizationLevel 
    {   
        FULL,
        HALF,
        NONE;
    };


public enum DatabaseLoggingLevel
{
    HIGH,
    MED,
    LOW,
    AUTH_ONLY,
    NONE
}
Run Code Online (Sandbox Code Playgroud)

我希望能够将整数与枚举中的值相关联,以便我可以拥有如下代码:

if(databaseLoggingLevel < ClassName.DatabaseLoggingLevel.HIGH) return;
Run Code Online (Sandbox Code Playgroud)

这只是为了在级别小于时禁用某些日志记录HIGH.我想过制作一个辅助函数,它返回一个与每个枚举值相关的整数值和一个switch语句,但这看起来很糟糕.有什么我想念的吗?

java enums

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

Gradle:如何将资源(非lib)罐子添加到战争根源?

在尝试从疯狂复杂的ant构建迁移到gradle的持续传奇中 - 我正在生成一些用于'javahelp'的资源jar文件.它们不包含任何类.我需要将创建这些资源jar的项目的输出添加到我的战争的根源(而不是WEB-INF/lib).

我试图解决的问题

apply plugin: 'war'

//Move files into position for the mmplEar project
task stage(overwrite: true, dependsOn: war) << {
}

war {
    from project(':help:schedwincli').buildDir.absolutePath + '/libs'
    include '*.jar'
}

dependencies {
    //Ensure the jar is generated, but we don't want it in the lib dir
    providedCompile project(':help:schedwincli')
}
Run Code Online (Sandbox Code Playgroud)

这会编译并运行,并且:help:schedwincli会运行并生成所需的jar,但是当我打开我的war文件时,预期的jar不会出现在战争的任何地方.建议?

编辑

我在下面提出了Peter建议的更改,但现在我收到此错误:

无法在配置容器上找到属性"资源".

这就是它说失败的地方:

from '../../runtime', /*Fails on this line*/
    '../../runtime/html',
    '../../runtime/html/Jboss',
    '../../runtime/props',
    '../../runtime/props/Jboss',
    '../../scripts',
    '../../../proj/runtime',
    '../../../proj/runtime/html',
    '../../../proj/runtime/html/Jboss',
    '../../../proj/runtime/props',
    '../../../proj/runtime/props/Jboss',
    configurations.resources
include …
Run Code Online (Sandbox Code Playgroud)

jar war gradle build.gradle

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