小编gMa*_*ale的帖子

是否有可能使log4j显示它用于配置自己的文件?

是否可以使Log4J显示其用于配置的文件的完整路径?


背景

我和log4j有一种爱恨交织的关系.在好的时候,它很棒但是当它不起作用时,它可能是最难调试的东西之一.我管理应用程序中的所有日志记录.因此,我非常熟悉日志和手册中定义默认初始化过程. 尽管如此,似乎每隔几周记录一次,我花了很多时间来解决问题.

这次,它严重受损.每个地方的每个日志语句都被转储到控制台,我无法弄清楚原因.上周使用我的log4j.xml文件的完全相同的代码库突然使用了一些其他配置.没有任何明显的变化.我唯一的猜测是,一些依赖已经改变,我怀疑Maven下载了一些破坏一切的邪恶JAR.

如果我能弄清楚Log4J决定在启动时使用哪个配置文件,我可以轻松解决这个问题和其他大多数问题.


摘要

有没有办法告诉Log4J打印它用于配置的文件?或者,有没有办法打破正在运行的应用程序并使用调试器来回答这个问题(可能使用表达式或通过检查变量)?

java log4j

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

使用bash,如何从目录中的所有文件中创建类路径?

对于一个bash大师来说,这将是一个非常简单的免费赠品:

使用bash,如何从目录中的所有文件中创建类路径?


细节

给定一个目录:

LIB=/path/to/project/dir/lib
Run Code Online (Sandbox Code Playgroud)

它只包含*.jar文件,例如:

junit-4.8.1.jar
jurt-3.2.1.jar
log4j-1.2.16.jar
mockito-all-1.8.5.jar
Run Code Online (Sandbox Code Playgroud)

我需要在表单中创建一个冒号分隔的classpath变量:

CLASSPATH=/path/to/project/dir/lib/junit-4.8.1.jar:/path/to/project/dir/lib/jurt-3.2.1.jar:/path/to/project/dir/lib/log4j-1.2.16.jar:/path/to/project/dir/lib/mockito-all-1.8.5.jar
Run Code Online (Sandbox Code Playgroud)

一些几乎表达我正在寻找的逻辑的seudo代码将遵循:

for( each file in directory ) {
   classpath = classpath + ":" + LIB + file.name
}
Run Code Online (Sandbox Code Playgroud)

通过bash脚本实现此目的的简单方法是什么?

java directory bash file classpath

62
推荐指数
2
解决办法
6万
查看次数

如何排除在Eclipse项目中产生警告/错误的文件夹?

好的.我厌倦了这个问题.这必须有一个简单的解决方案,我很确定!我希望SO可以帮助我彻底摆脱这一切!

我们如何让Eclipse停止尝试处理/编译特定项目目录下的所有文件?目标是在问题视图中没有错误/警告,如果它们与此文件夹或其子文件夹中的某些内容相关.

背景

我们运行Eclipse 3.6,m2eclipse插件v0.10.2.20100623管理我们的autobuild.由于我无法控制的原因,我们在SVN项目目录下有完整的BlazeDS发行版src/main/resources/blazeds.从本质上讲,这个目录包含一个运行blazeds的tomilla的vanilla发行版,当我们通过SCP部署到我们的服务器时,我们将添加所有配置和项目文件.

因此,当我们运行deploy时,这个版本的tomcat被复制到服务器,我们的项目被放在里面.Tomcat和我们的RIA应用程序工作,一切都很好.

问题是,Eclipse src/main/resources/blazeds在运行AutoBuild时尝试编译所有内容,这会在我们的问题视图中生成大约300个错误/警告.因此,当真实的错误出现时,它会在噪声中丢失.

这些错误代码从茎中/blazeds/tomcat/webapps/samples/testdrive-datapush,也是testdrive-httpservice,traderdesktop例如web应用.它们具有不在类路径上的依赖源代码和未包含在库中的jar.

尝试失败的解决方案

我正在尝试推动正确的解决方案:完全移除样品,并从我们的版本控制中获取blazeds.这不会很快发生.

我在这里遵循了SO的答案,但这只是一个非常临时的解决方案.我已经尝试过在我能想到的任何地方添加排除项目,我的团队的其他成员也做了同样的事情.我已删除src/main/resources作为源目录(在首选项> Java构建路径>源选项卡中)我已blazeds在资源目录下添加了排除项.我试过的每一个排列blazeds,并**作为*blazeds*,**/blazeds/**等等.

我甚至尝试过包含编译器抱怨的库和源文件,但是如果不过度修改我们的项目配置,我就无法做到正确.

摘要

这必须简单.排除在eclipse项目中产生警告/错误的文件夹的常规方法是什么?


更新#1:
下面的gedim解决方案是不错的但它
1)不清除项目中的红色X
2)是我们团队中的每个人都需要手动改变
(即,它不在项目属性文件中;因此,它没有检查到subversion)

我希望通过告诉Eclipse该目录不包含
要编译/验证的项目来解决核心问题.这样的更改可能会出现在其中一个项目设置文件中.


更新#2:

下图显示了我想要清除的红色X,这
Build Path > Exclude
不是一个选项......

红色X不会消失

eclipse ide build-process m2eclipse

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

如何查看eclipse"run configurations"使用的shell命令

鉴于Eclipse中的"运行配置",我想打印出用于运行它的相关shell命令.

例如:现在,在Eclipse中,如果我点击"播放",它将运行:

mvn assembly:directory -Dmaven.test.skip=true

我没有看到那个命令,我只知道IDE必须在某些时候运行.但是,其他一些运行配置对于长类路径和虚拟机选项来说要复杂得多,坦率地说,有时我不知道等效的shell命令是什么(特别是涉及到Flex时).

必须有一些方法来访问与Eclipse/Flex Builder中的"运行配置"相关联的shell命令.这些信息必须可用,这让我相信有人写了一个插件来显示它.或者可能已经在Eclipse中内置了一个用于访问它的选项.

那么有没有办法将Eclipse运行配置转换为shell命令?

(仅限上下文:我问,因为我正在编写一个bash脚本,可以在开发期间自动完成我所做的一切 - 从运行数据库一直到打开Firefox并在运行Web应用程序之前清除缓存.所以每个命令我从IDE运行需要存在于脚本中.有些很难搞清楚.)

java apache-flex eclipse flash-builder maven

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

如何防止搜索引擎索引我网站的单个页面?

我不希望搜索引擎索引我的版本说明页面.我怎么能这样做?

html seo search-engine

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

Android - 开始多项活动

是否可以一次启动多个活动?我的意思是,从主要创建3个活动按某种顺序,只是最后一个将是可见的?到目前为止,我只能创建一个活动.

谢谢

android multiple-instances android-activity

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

在Kotlin中,如何将扩展方法添加到另一个类,但只在某个上下文中可见?

在Kotlin中,我想将扩展方法添加到类中,例如添加到类中Entity.但我只想Entity在交易中看到这些扩展,否则隐藏.例如,如果我定义这些类和扩展:

interface Entity {}

fun Entity.save() {}
fun Entity.delete() {}

class Transaction {
    fun start() {}
    fun commit() {}
    fun rollback() {}
}
Run Code Online (Sandbox Code Playgroud)

我现在可以叫意外save(),并delete()在任何时候,但我只希望他们可以在后start()一交易后不再commit()rollback()?目前我可以这样做,这是错误的:

someEntity.save()       // DO NOT WANT TO ALLOW HERE
val tx = Transaction()
tx.start()
someEntity.save()       // YES, ALLOW
tx.commit()
someEntity.delete()     // DO NOT WANT TO ALLOW HERE
Run Code Online (Sandbox Code Playgroud)

如何使它们在正确的上下文中显示和消失?

注意: 这个问题是由作者故意编写和回答的(答案问题),因此对于常见问题的Kotlin主题的惯用答案存在于SO中.还要澄清为Kotlin的alphas写的一些非常古老的答案,这些答案对于当前的Kotlin来说是不准确的.其他答案也欢迎,有很多样式如何回答这个问题!

dsl builder kotlin

21
推荐指数
2
解决办法
3024
查看次数

如何禁止maven汇编插件跳过已添加的文件?或者允许覆盖?

几个星期以来,我一直在与maven搏斗,让它"正确"部署我们的项目.

我差不多完成但是我有一个顽固的小问题:

当我使用带有"目录"目标的maven程序集插件时

mvn assembly:directory

我得到了很多控制台输出,如下所示:

[INFO] tomcat/conf already added, skipping
 [INFO] tomcat/conf/Catalina already added, skipping
 [INFO] tomcat/conf/Catalina/localhost already added, skipping
 [INFO] tomcat/webapps already added, skipping

我编写了自己的汇编描述符,它基本上将多个FileSets复制到我们的deploy目录中的各个子目录中.只要将一个FileSet中的文件复制到另一个FileSet已经创建了基本目录结构的位置(以及一些可以覆盖的"默认"文件),就会出现上述消息.

所以,我很难搞清楚:

我如何1)抑制这些消息(但只有"已经添加"消息)或2)允许覆盖?

maven-2 maven maven-assembly-plugin

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

Maven:编译包含Java 1.6源代码的aspectj项目

主要问题

我想做的事情相当容易.或者你会想.但是,没有什么工作正常.

要求: 使用maven,使用AspectJ编译器编译Java 1.6项目.

注意: 我们的代码无法使用javac进行编译.也就是说,如果未编入方面,则编译失败(因为我们有方面可以软化异常).


2011年 2月21日更新:有两个同样可行的解决方案(两种情况都使用 aspectj-maven-plugin maven-compiler-plugin结合):

  1. 添加 <failOnError>false</failOnError> 到编译器插件(感谢 Pascal Thivent)
  2. 添加<phase>process-sources</phase> 到aspectj编译器插件(感谢Andrew Swan)

有关这些解决方案的更多信息,请参阅答案部分.我认为解决方案#2是更好的方法.







相关问题

问题(基于以下失败的尝试):

  1. 如何让maven运行aspectj:直接编译目标,而不运行compile:compile?
  2. 你怎么忽略编译的失败:编译?
  3. 你如何指定一个指向你自己的ajc编译器的自定义compilerId(即make compile:compile使用除了plexus之外的aspectj编译器)?*
感谢您提出的所有建议.这些是我试过的导致我的问题/问题的事情:


尝试1(失败): 指定aspectJ作为maven-compiler-plugin的编译器:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.2</version>
<configuration>
 <source>1.6</source>
 <target>1.6</target>
 <compilerId>aspectj</compilerId>
</configuration>
<dependencies>
 <dependency>
  <groupId>org.codehaus.plexus</groupId>
  <artifactId>plexus-compiler-aspectj</artifactId>
  <version>1.8</version>
 </dependency>
</dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)

这失败并出现错误:

org.codehaus.plexus.compiler.CompilerException: The source version was not recognized: 1.6

无论我使用的是什么版本的plexus编译器(1.8,1.6,1.3等),这都行不通.我实际上阅读了源代码,发现这个编译器不喜欢Java 1.5以上的源代码.

尝试2(失败): 使用附加到编译和测试编译目标的aspectJ-maven-plugin:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.3</version>
<configuration>
 <source>1.6</source>
 <target>1.6</target>
</configuration>
<executions>
 <execution>
  <goals>
   <goal>compile</goal>      
   <goal>test-compile</goal> …
Run Code Online (Sandbox Code Playgroud)

java aop maven-2 aspectj

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

在eclipse中设置JUnit超时

当我运行所有JUnit测试时,使用eclipse,我可以设置默认超时吗?

背景

我的经理坚持编写单元测试,有时需要5分钟才能完成.当我尝试运行我们的整个测试套件(仅约300次测试)时,可能需要30多分钟.我想放置一些可以阻止任何超过10秒的测试的东西.

我知道个别测试可以注释:

@Test(timeout=10000)
Run Code Online (Sandbox Code Playgroud)

但这样做会使他的长期测试总是失败.我希望他们在他的盒子上运行时工作(如果我必须在检查之前对项目进行微调,那是可以接受的.但是,从40个不同的测试文件中删除超时是不切实际的).

我也知道我可以创建一个ant任务来为所有测试设置默认超时,类似于:

<junit timeout="10000">
  ...
</junit>
Run Code Online (Sandbox Code Playgroud)

问题是我们通常使用右键单击>运行方式> JUnit测试从Eclipse中运行测试.

摘要

那么是否有一种相对无痛的方法为所有测试设置超时,可能使用运行配置设置,项目设置,或JUnit首选项,或环境变量,或什么?我甚至决定安装一些其他插件,让我右键单击特定的测试文件夹,并以其他方式运行所有测试,如通过蚂蚁或其他东西......

java eclipse junit unit-testing timeout

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