小编C-O*_*tto的帖子

带有"包含"页面的jsp页面中的变量

jsp页面中的变量的作用域规则是什么?使用标记将页面添加到页面中?

我的理解是,一个包含的页面本质上是将verbatum复制到页面中,这将使我假设如果我在Parent jsp中声明了一个变量,它将在子节点中可用.

然而Eclipse抱怨这一点(可以理解的是,因为我可以将页面包含在任何页面中或者单独使用它们.当我尝试启动tomcat服务器时,它无法启动.

我基本上想从父页面的会话中获取几个变量,并在子页面中使用它们.这不起作用.

所以我想到了从每个子页面的会话中获取它们的想法,但是我想知道我是否可以给它们所有相同的变量名称,或者如果我必须为它们选择不同的变量名称每个页面都没有冲突.

如果我在父jss中导入log4net,那么我还需要在子代码中导入它吗?

java jsp java-ee

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

Chrome在业力中运行两次测试

在我的业力测试中使用Chrome时,我经常(超过50%的运行)看到每个测试都由Chrome执行两次.您可以在下面找到示例输出和我的配置.

我怎么能阻止这个?原因是什么?

karma start --single-run --browsers Firefox,Chrome

INFO [karma]: Karma v0.12.17 server started at http://localhost:9876/
INFO [launcher]: Starting browser Firefox
INFO [launcher]: Starting browser Chrome

INFO [Chrome 36.0.1985 (Linux)]: Connected on socket RV8G8p63bCLQGaAJW9Hc with id 91444447
Chrome 36.0.1985 (Linux): Executed 0 of 92 SUCCESS (0 secs / 0 secs)
Chrome 36.0.1985 (Linux): Executed 1 of 92 SUCCESS (0 secs / 0.065 secs)
[...]
Chrome 36.0.1985 (Linux): Executed 91 of 92 SUCCESS (0 secs / 0.24 secs)
Chrome 36.0.1985 (Linux): Executed …
Run Code Online (Sandbox Code Playgroud)

google-chrome karma-runner

12
推荐指数
3
解决办法
3284
查看次数

Java混淆,重点是添加无用的操作码

我正在寻找一个Java字节混淆器,它"扰乱"现有的操作码并添加新的(无用的)代码.我对任何类型的重命名都不感兴趣,这是大多数混淆者似乎都会做的事情.

一点背景:作为我的博士论文的一部分,我正在开发一个工具,用于识别(Java字节码)程序的无用部分.为了呈现不错的结果,我希望有一些带有大量无用代码的输入程序.除了我目前关注的例子(它有一些使代码无用的微妙错误,认为用一个错误的参数调用"等于")我还需要一些只有"怪异"代码的例子 - 由代码混淆器生成.

我已经玩过ProGuard,但它似乎只是稍微优化(并因此修改)代码.重命名方法,字段......的部分与我无关,这就是我将其关闭的原因.

java obfuscation static-analysis

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

解决方法:聚合下游测试结果

据我所知,"聚合下游测试结果"功能不能按预期工作(并且很难找到有用的文档).我想实现非常相似的功能:

作业构建并行触发作业T1,T2(其中T1执行FindBugs,T2执行PMD).

场景1: 一旦T1T2完成(我可以使用"Join"插件实现),我想收集工件(T1 /findbugs.xml和T2 /pmd.xml).然后分析这些并生成好的统计数据.

场景2(我更喜欢这个): 与场景1类似,但分析是作为T1T2的一部分完成的(并行!).一旦T1T2完成,分析结果就会合并成很好的统计数据.

我的问题: 对于方案1,我不知道如何引用下游项目T1T2.我可以使用上一次成功构建,但在考虑许多并行作业时,这似乎很奇怪.

对于场景2,我不知道如何导入FindBugs/PMD/Checkstyle/SLOCcount/...插件所需的数据,以便相应的图形(也是?)出现在T1/*T2*之外.

谢谢,卡斯滕

jenkins

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

FileLocator.resolve(url)的转义结果

该方法FileLocator.resolve(url)可用于将地址bundleentry://something/somewhere/x.txt转换为适当的文件URL /mnt/foo/somewhere/x.txt.

但是,这也记录在https://bugs.eclipse.org/bugs/show_bug.cgi?id=145096,URL不会被转义.例如,如果包含引用的bundle的Eclipse安装位于包含空格的目录中,则返回的URL FileLocator.resolve仍包含空格,因此调用url.toURI()失败.

  • 如何手动转义URL中的所有必要字符?
  • 如何File根据相对于当前包的路径获取对象?

作为参考,如果该文件位于包含空格的目录中,则尝试查找dir插件.jar文件中的目录时,代码会失败:

    final IPath pathOfExampleProject = new Path("dir");
    final Bundle bundle = Platform.getBundle(AproveIDs.PLUGIN_ID);
    final URL url = FileLocator.find(bundle, pathOfExampleProject, null);
    final URL url2 = FileLocator.toFileURL(url);
    url2.toURI(); // Illegal character in path at index [...]
Run Code Online (Sandbox Code Playgroud)

eclipse eclipse-plugin

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

Gradle:使集成测试源模块工作

我有一个简单的多模块 Java Gradle 项目。单元测试运行良好,但我无法添加用于集成测试的工作源集。测试已编译(我看到编译错误),并出现在控制台输出中,但它们没有执行(现有测试应该失败)。

此外,在 IntelliJ IDEA 中,显示了源集,但不是作为测试模块。我在测试旁边的装订线中看到“运行”图标,但运行测试会给出 > No tests found for given includes: [de.cotto.integration_tests.moduletwo.ModuleTest.name](filter.includeTestsMatching).

我的问题:

  • 为了使测试运行(使用./gradlew build),我需要更改什么?
  • 如何让 IntelliJ IDEA 选择源集作为“测试”模块?
  • 如何从 IntelliJ IDEA 运行测试?
  • 带模块的 Java 14 的奖励积分(提交

源集定义:

sourceSets {
    integrationTest {
        compileClasspath += sourceSets.main.output
        runtimeClasspath += sourceSets.main.output
    }
}

configurations {
    integrationTestImplementation.extendsFrom testImplementation
    integrationTestRuntimeOnly.extendsFrom runtimeOnly
}

task integrationTest(type: Test) {
    description = 'Runs integration tests.'
    group = 'verification'

    testClassesDirs = sourceSets.integrationTest.output.classesDirs
    classpath = sourceSets.integrationTest.runtimeClasspath
    shouldRunAfter test
}

check.dependsOn integrationTest
Run Code Online (Sandbox Code Playgroud)
  • 摇篮6.4.1 …

java integration-testing intellij-idea gradle

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

Cloud Foundry `cf push` 很慢:CPU 使用率高,禁用资源匹配

对于我的 Java 应用程序cf push需要太长时间。

Uploading ${APPNAME}...
Uploading app files from: ${PATH}.jar
Uploading 19.8M, 6584 files
Done uploading
Run Code Online (Sandbox Code Playgroud)

推送时,第一行显示几分钟(CPU 负载为 100%)。之后,实际上传开始(第二行)并在一秒钟内完成。

随着CF_TRACE=true我看到一个resource match请求(https://apidocs.cloudfoundry.org/220/resource_match/list_all_matching_resources.html)。对于此请求,将发送一个 JSON 字符串,其中包含我的 JAR 文件中所有文件的哈希总和。在我的情况下,收集这些信息需要很长时间,因为 JAR 文件包含许多文件。

有没有办法禁用资源匹配请求?据我所知,它仅用于不上传未更改的文件(CloudFoundry 实例已经知道)。不过,上传 20M 的数据只需要一秒钟。

cloud-foundry

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

在 Java 8 流中捕获 UncheckedIOException

编辑:这似乎不可能,请参阅https://bugs.openjdk.java.net/browse/JDK-8039910

我有一个帮助类,它提供了一个Stream<Path>. 这段代码只是Files.walk对输出进行包装和排序:

public Stream<Path> getPaths(Path path) {
    return Files.walk(path, FOLLOW_LINKS).sorted();
}
Run Code Online (Sandbox Code Playgroud)

由于遵循符号链接,如果文件系统中出现循环(例如 符号链接x -> .),则 中使用的代码Files.walk会抛出UncheckedIOException包装 的实例FileSystemLoopException

在我的代码中,我想捕获此类异常,例如,只记录一条有用的消息。一旦发生这种情况,结果流可以/应该停止提供条目。

我尝试将.map(this::catchException)和添加.peek(this::catchException)到我的代码中,但在此阶段未捕获异常。

Path checkException(Path path) {
    try {
        logger.info("path.toString() {}", path.toString());
        return path;
    } catch (UncheckedIOException exception) {
        logger.error("YEAH");
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有的话,我如何UncheckedIOException在我的代码中捕获 an发出 a Stream<Path>,以便路径的使用者不会遇到此异常?

例如,以下代码永远不会遇到异常:

List<Path> paths = getPaths().collect(toList());
Run Code Online (Sandbox Code Playgroud)

现在,异常是由代码调用触发的collect(我可以在那里捕获异常):

java.io.UncheckedIOException: java.nio.file.FileSystemLoopException: /tmp/junit5844257414812733938/selfloop

    at java.nio.file.FileTreeIterator.fetchNextIfNeeded(FileTreeIterator.java:88)
    at …
Run Code Online (Sandbox Code Playgroud)

java exception-handling exception java-stream

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

Semaphore(int permit, boolean fair),公平到底是做什么的?

如果信号量上没有可用的许可,我需要实现一个 FIFO 队列。我的教授指定在考试期间我们将只能使用acquire()release()方法。我的想法是使用tryAcquire()如果结果为 false 将在 List 底部添加 currentThread的方法来实现 LinkedList 。无法使用tryAcquire()我搜索的方法,我注意到了这个结构。如果我初始化一个信号量,例如:

Semaphore example = new Semaphore(5, true);
Run Code Online (Sandbox Code Playgroud)

如果一个线程试图acquire()在一个已用尽其许可的信号量上使用方法,会发生什么?它会自动创建队列吗?我必须以任何方式处理它还是该过程是自动的?

java queue semaphore fifo

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

JProfiler:试图找到内存泄漏

我的应用程序需要大约10 GB的RAM用于特定输入,其中常规输入大约1 GByte就足够了.使用JProfiler进行更密切的分析表明(在GC之后)标准类使用了相当多的内存java.util.*:

LinkedHashMap$Entry,HashMap$Entry[],LinkedHashMap,HashMap$KeySet,HashMap$EntrySet,LinkedHashSet,TreeMap$Entry,和TreeMap(以该顺序),和相关的类.以下条目是我自己的代码中的一个类,其中实例的数量和使用的内存量似乎非常合理.

详细说明总堆使用量约为900 MB,我SizeAll Objects视图中看到以下条目:

  • LinkedHashMap$Entry:418 MByte
  • HashMap$Entry[]:178 MByte
  • LinkedHashMap:124 MByte
  • HashMap$KeySet:15 MByte

使用的内存LinkedHashMap似乎太高,即使考虑到每个LinkedHashSet都由a支持LinkedHashMap.

我在JProfiler中记录了对象分配并观察了Allocation Hot Spotsfor LinkedHashMap.在那里,我看到了我不理解的条目:

  • 第三个条目显示了名为热点(与分配内存的6.5%),X.<init>其中,X在我自己的代码的类.这种方法的构造函数没有任何关系LinkedHashMap.此次进入Thread.run结束后显示从6.5%缓慢下降至5.8%Thread.run.我的代码可能有什么问题X?为什么在这里显示?
  • 大约8%的已分配内存显示在名为的热点中java.util.HashSet.iterator.沿着具有最高百分比(第一个条目:2.8%)的路径进入此条目之后,我在代码中获得了几个方法,直到最后java.lang.Thread.run显示(具有2.8%).这是什么意思?据我所知,该Thread.run方法不会创建实例LinkedHashMap.该iterator方法的连接是什么?

一般来说,如何找到引用(很多)LinkedHashMap …

jprofiler

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