小编Gar*_*ary的帖子

如何使用IntelliJ IDEA计算Java代码行?

我知道我过去曾使用过该功能,但我不知道我之前是怎么做过的.它一定是简单的,对吧?

java metrics intellij-idea

264
推荐指数
7
解决办法
12万
查看次数

unix/linux的Java IO实现"tail -f"

我想知道用什么技术和/或库来实现linux命令"tail -f"的功能.我基本上是在寻找一个附加/替换的下降java.io.FileReader.客户端代码可能如下所示:

TailFileReader lft = new TailFileReader("application.log");
BufferedReader br = new BufferedReader(lft);
String line;
try {
  while (true) {
    line= br.readLine();
    // do something interesting with line
  }
} catch (IOException e) {
  // barf
}
Run Code Online (Sandbox Code Playgroud)

缺失的部分是合理的实施TailFileReader.它应该能够读取文件打开前存在的文件部分以及添加的行.

java file-io iostream file tail

69
推荐指数
5
解决办法
7万
查看次数

bash脚本如何知道它来源时安装的目录.运营商?

我想要做的是将文件中的设置包含到我当前的交互式bash shell中,如下所示:

$./path/to/some/dir/.settings

问题是.settings脚本还需要使用".".运算符包含其他文件,如下所示:

..extra_settings

如何在.settings文件中引用.extra_settings的相对路径?这两个文件始终存储在同一目录中,但此目录的路径将根据这些文件的安装位置而有所不同.

操作员总是知道/ path/to/some/dir /,如上所示..settings文件如何知道安装它的目录?我宁愿没有一个记录已安装目录名称的安装过程.

unix linux bash shell scripting

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

如何禁用Jenkins管道构建的安全检查

我正在本地可信赖的环境中运行Jenkins,我正在尝试运行此管道.这个Jenkinsfile被检入git.

#!groovy
node('master') {
    def ver = pomVersion()
    echo "Building version $ver"
}

def pomVersion(){
    def pomtext = readFile('pom.xml')
    def pomx = new XmlParser().parseText(pomtext)
    pomx.version.text()
}
Run Code Online (Sandbox Code Playgroud)

我运行构建的前几次,我需要手动批准更改(Jenkins-> Mange Jenkins->进程内脚本批准).现在我得到了这个例外,没有什么可以批准的.我想要做的就是解析一个XML文件.管道构建可以完全绕过这些安全检查吗?

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: unclassified field groovy.util.Node version
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.unclassifiedField(SandboxInterceptor.java:367)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:363)
    at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:23)
    at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:17)
    at WorkflowScript.pomVersion(WorkflowScript:10)
    at WorkflowScript.run(WorkflowScript:3)
    at ___cps.transform___(Native Method)
    at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:62)
    at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
    at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:54)
    at sun.reflect.GeneratedMethodAccessor479.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
    at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
    at com.cloudbees.groovy.cps.Next.step(Next.java:58)
    at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:154)
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18)
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32)
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:29) …
Run Code Online (Sandbox Code Playgroud)

security groovy jenkins jenkins-workflow jenkins-pipeline

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

IntelliJ“导航声明”可以配置为尊重拆分编辑器吗

我在 IntelliJ IDEA 中一直使用“导航声明”。当使用拆分编辑器时,我想将其配置为略有不同。

基本用例很简单:

  1. 在只打开一个类的情况下开始使用 IntelliJ IDEA,将其命名为“ClassA”。ClassA 具有对 ClassB 的引用。
  2. 使用“导航->声明”导航到 ClassB。IntelliJ 将为 ClassB 打开一个新选项卡并在编辑器窗口中显示这个类。ClassA 在编辑器中不再可见。
  3. 使用“导航->返回”。ClassA 选项卡现在在一个编辑器窗口中再次可见。使用键盘快捷键,这可以是一种非常快速的代码导航方式。

但是,在使用拆分窗口时,事情表现得很奇怪:

  1. 在编辑器窗口中打开几个类文件。
  2. 拆分窗口(工具-> 编辑器选项卡-> 垂直拆分)。
  3. 在左侧选项卡组中,导航到一个有趣的代码部分,即我们想暂时参考的部分。
  4. 在右侧选项卡组中,将光标定位在所引用的类上并选择 Navigate->Declaration。

如果该类已在左侧选项卡组中打开,IntelliJ 将在左侧编辑器中将该选项卡放在前面,替换我选择查看的一个类。但是,如果该类尚未在任何选项卡组中打开,IntelliJ 将在右侧选项卡组中打开文件。这与不使用拆分编辑器时发生的情况基本相同。

更糟糕的是,“导航->返回”操作现在确实会导航回右侧的原始类,但不会更改左侧的任何内容,即我打算暂时引用的一个类是不可见的.

因此,“导航-> 打开声明”操作的行为取决于 IntelliJ 本身的状态,而不是我的意图。我不希望 intelliJ 任意决定在哪个拆分窗口中显示文件。我宁愿它只打开当前光标所在的选项卡组中的声明。

真正好的是像“在当前选项卡组中导航->打开声明”这样的操作。这存在吗?可以为此创建插件吗?

java tabs editor intellij-idea

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

如何创建不将WARN消息记录到日志的Spring @ExceptionHandler方法

我有这个Spring @ExceptionHandler,它主要做我想要的.它将HTTP状态代码设置为409,并在JSON响应中包含额外的错误信息.

@ExceptionHandler(PolicyExecutionException.class)
public ResponseEntity handleException(PolicyExecutionException se){
    return ResponseEntity.status(HttpStatus.CONFLICT).body(se.getScriptErrorMap());
}
Run Code Online (Sandbox Code Playgroud)

我注意到的是,即使它向客户端提供了正确的响应,Spring也会在WARN级别记录消息.我的信息很长,只与客户有关.我宁愿不在服务器端登录它.这可以关掉吗?

2017-06-19 18:48:10,659 [p-nio-8060-exec-2] WARN oswsmmaExceptionHandlerExceptionResolver - 由Handler执行引起的已解决异常:

我使用的另一种方法是捕获PolicyExecutionException每个可以抛出它的Controller方法.如果可能的话,这会导致额外的样板.

java spring spring-mvc spring-boot

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

在IntelliJ IDEA中是否存在类似emacs的增量搜索?

我想念增量搜索的emacs行为.在emacs中,我们可以这样做:

  1. 键入搜索文本,即"按钮"

将找到按钮的第一次出现.如果继续按Cs,将会发现下一次出现.在我看来,IntelliJ接近于此,除了你需要按下不同的按键进行第二次搜索.对我来说,这很烦人.我宁愿按下相同的keystoke进行第一次以及随后的搜索.

IntelliJ中有可能吗?它在Eclipse中使用emacs键绑定很好用.

编辑:我在这个问题上开了一笔赏金.有没有一个类似的实现这个功能的例子写成IntelliJ IDEA的插件或补丁?

java emacs incremental-search intellij-idea

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