在我的Vaadin项目中,我依赖于某个库.该库使用slf4j进行日志记录.在库pom中,logback slf4j绑定被添加为运行时依赖项.
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<scope>runtime</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我直接使用log4j进行日志记录.我希望库添加的日志进入我的log4j日志.
为此,我在我的pom中添加了以下内容,包括slf4j log4j绑定
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
然而,slf4j抱怨它发现了多个绑定.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/program_files/apache-tomcat-8.0.24/temp/0-ROOT/WEB-INF/lib/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/program_files/apache-tomcat-8.0.24/temp/0-ROOT/WEB-INF/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
Run Code Online (Sandbox Code Playgroud)
我检查了我的应用程序的依赖树,它依赖于logback.(以下是对logback的唯一依赖)
[INFO] | +- com.mycompany.mylib:libname:jar:1.1.0-SNAPSHOT:compile
[INFO] | | +- org.slf4j:jcl-over-slf4j:jar:1.7.5:runtime
[INFO] | | +- ch.qos.logback:logback-classic:jar:1.0.13:runtime
[INFO] | | | \- ch.qos.logback:logback-core:jar:1.0.13:runtime
[INFO] | | +- ch.qos.logback:logback-access:jar:1.0.13:runtime
Run Code Online (Sandbox Code Playgroud)
此外,当我WEB-INF\lib在我的war文件中检查内部目录时,我发现了以下jar.
logback-access-1.0.13.jar
logback-classic-1.0.13.jar
logback-core-1.0.13.jar
Run Code Online (Sandbox Code Playgroud)
为什么logback最终出现在我的lib目录中?正如我所听到的,运行时依赖项不应该进入libs目录.
我该如何解决这个问题?该库是在我公司内部开发的,如果需要,我可以要求库开发人员删除logback运行时依赖项.
我正在阅读这篇关于"Java中的奇怪事物"的文章,我遇到了一个有趣的概念:不可判定的类型.
考虑以下三个类/接口:
public interface Type<T> { }
Run Code Online (Sandbox Code Playgroud)
public class D<P> implements Type<Type<? super D<D<P>>>> { }
Run Code Online (Sandbox Code Playgroud)
public class WildcardTest {
Type<? super D<Byte>> d = new D<Byte>();
}
Run Code Online (Sandbox Code Playgroud)
显然问题是它是否D是不可判定的Type<? super D<Byte>>; 谁能进一步解释这个?
javac 1.8.0_60StackOverflowError尝试编译时抛出很长时间WildcardTest:
The system is out of resources.
Consult the following stack trace for details.
java.lang.StackOverflowError
at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:4640)
at com.sun.tools.javac.code.Types$26.visitClassType(Types.java:3834)
at com.sun.tools.javac.code.Types$26.visitClassType(Types.java:3826)
at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:778)
at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:4640)
at com.sun.tools.javac.code.Types$26.visitClassType(Types.java:3839)
at com.sun.tools.javac.code.Types$26.visitClassType(Types.java:3826)
at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:778)
at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:4640)
at com.sun.tools.javac.code.Types$26.visitClassType(Types.java:3839)
at …Run Code Online (Sandbox Code Playgroud) 我一直试图让Guice工作但最终得到这个:
类必须具有一个(且只有一个)构造函数
我的界面:
public interface AddrBookStore {
public Contact getContactByKey(String key);
public void addContact(Contact c);
}
Run Code Online (Sandbox Code Playgroud)
实施:
public class RdbmsBasedAddrBookStore implements AddrBookStore {
private Connection connection;
public RdbmsBasedAddrBookStore(Connection connection) {
this.connection = connection;
}
@Override
public Contact getContactByKey(String key) throws AddrBookException
{}
@Override
public void addContact(Contact c) throws AddrBookException
{}
}
Run Code Online (Sandbox Code Playgroud)
绑定模块:
public class ABguiceConfingModule extends AbstractModule {
@Override
protected void configure() {
bind(AddrBookStore.class).to(RdbmsBasedAddrBookStore.class);
}
}
Run Code Online (Sandbox Code Playgroud)
AddrBook我注射的客户:
public class AddrBook {
private AddrBookStore store;
@Inject
public AddrBook(AddrBookStore store)
{ …Run Code Online (Sandbox Code Playgroud) 我在Windows上开发,我想使用beanstalkd.它仅作为tarball提供,我只是想知道是否有一些方法可以像在Linux中一样轻松地构建它?我找到了一些用于Windows的gnu make端口,但它们似乎没有工作.源代码分发是否特定于Linux?
当我尝试使用mingw32-make时,它说"没有什么可以为文件做".TBH我不知道该怎么运行它,所以我尝试了tarball,目录,以及Makefile.in和Makefile.am.他们都说同样的话.
我现在开始使用Pubsubhubbub(以及所有关于实时的东西),但我在使用Subscriber选项时遇到了麻烦.
我正在尝试用PHP开发一个webapp来:
我验证在PHP中存在一个库到订阅服务器(在Git中),但使用这个库不能使订阅工作(得到409错误!).
我怎样才能做到这一点?
我不知道如何描述它,但我正在寻找一种工具,可以为我的代码提供关于如何...更优雅的建议.
例如,使嵌套的if()语句成为switch语句.这样的事情.由于我不知道如何描述我的问题,我不知道该搜索什么.我的东西代码美化不要专门改变陈述吧?
基本上就是这样.我在Matlab中有一些代码,我想发布它,所以任何人都可以使用它.另外我想防止代码在我之后关闭.
问:我可以选择GPL进行许可吗?如果没有,我的选择是什么?(除了停止使用Matlab,我已经在考虑)
编辑
我只是编辑它,因为这对我的情况更准确.很抱歉给您带来不便.
问:建议使用GPL发布我的Matlab代码以使其在社区中发展吗?如果没有,你会选择什么?
例:
ClassName.php
<?php echo "This will crash all"; ?>
Run Code Online (Sandbox Code Playgroud)
在另一个档案中......
foreach ($FILENAMES_WITHOUT_DOT_PHP as $name => $value) {
if (class_exists( $value )) {
echo "ClassName exists...";
}
else {
echo "ClassName doesn't exists....";
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码的输出是: 这会崩溃所有
而不是这样: ClassName不存在....
自动加载功能:
function __autoload( $var_class )
{
require_once( "$var_class.php") ;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为Web应用程序项目确定最佳分支策略.以下是我到目前为止所提出的建议,我将非常感谢任何评论和经验.
我看到它的方式有两个主要的分支策略:"按版本分支"和"按功能分支".
"按发布分支":开发发生在主干上.当发布时间临近时,将为该发行版创建一个分支.然后稳定/测试该分支,最后进行释放.在发布之后,分支被合并回主干,同时保持发布分支活动以进行错误修复.是否应用了错误修复,然后将其合并到主干中(如果主干上的开发没有以其他方式使错误重叠).新功能将添加到主干中,不会影响发布分支.当新的发布时间临近时,将创建一个新的发布分支aso
"按功能分支":主干始终是"生产"主干(现场代码).错误修正直接提交到主干.下一版本的功能是在功能分支中开发的.Bugfixes会不时合并到功能分支中.当发布时间到来时,功能分支将合并到主干中,并且生命周期将继续.
现在,我认为这两种策略之间的实际区别在于,"发布"允许您维护软件的不同生产版本(当客户A具有版本1和客户B版本1.5时,客户端是此处的付费客户案件).相比之下,使用"按功能"策略,您只能支持当前的生产版本(所有客户端都使用最新版本).
由于在典型的Web应用程序中,所有客户端都使用相同的"最新"版本(因为它们都访问相同的服务器),我认为"按功能"方法是最常用的.它消除了合并"跨层次结构"的需要,比如说必须将bug修复应用于所有3个版本.
所以我目前的状态是我应该选择"逐个分支".如果重要,我的团队不是很熟练.
svn version-control branch web-applications branching-strategy
我有一个名词数据库(ex"house","感叹号","苹果"),我需要在我的应用程序中输出和描述.很难用一个自然的句子来描述一个项目而不使用"a"或"an" - "房子很大","感叹号很小"等等.
我可以在PHP中使用任何函数,库或hack来确定用A或AN描述任何给定名词是否更合适?