标签: apache-commons

使用SL4J,Jakarta Commons日志记录,log4j记录第三方库和我自己的代码

我有一些关于日志记录的问题,更具体地说是有关设置和确保它有效的问题.

我正在做的项目将使用Wicket,SpringHibernate.我知道Wicket和Hibernate使用Simple Logging Facade for Java(SL4J),Spring正在使用Apache Commons日志记录组件.

他们会幸福地共存吗?我以为我会将log4j与SL4J和Apache commons的日志记录组件一起使用,你认为这是个好主意吗?

我可以将它们全部设置为将记录数据输出到公共文件中吗?或者我应该使用单独的文件?或者我应该将日志消息存储在数据库中?(我宁愿没有,因为我发现文本文件上的grepping等非常方便.)

对于Spring,我想我需要某种配置文件用于Apache Commons日志记录组件以及我指导它使用log4j?

当我设置它们时,我想看到一切正常我将日志记录级别设置为INFO,因为它相当确定所有三个框架都在该模式下输出一些信息?还是有更好的方法来确定?

我的最后一个问题.在我刚开始的项目中,您是否建议我使用SL4J进行自己的日志记录?(我以为我会直接使用log4j,但那是在我学习更多关于日志记录之前的事情,而且很多值得尊敬的库似乎选择了桥/门面的路径来满足他们的日志记录需求.如果它在没有添加的情况下获得我们的灵活性成本没有理由不这样做.)

我期待着听到更多关于你如何进行伐木的信息.这对我来说是一个新领域,我渴望提升自己.

java logging log4j apache-commons slf4j

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

Java中的IMAP客户端:JavaMail API还是Apache Commons Net?

我必须用Java实现IMAP客户端.

使用Apache Commons Net库有哪些优势?它是否使实现更健壮,更灵活?

我如何处理返回值,它总是产生字符串.

例如:

public static void main(String[] args) throws Exception {
    IMAPClient client = new IMAPClient();
    client.connect(SERVER);
    client.login(USERNAME, PASSWORD);
    client.select("INBOX");
    client.fetch("1", "body[header]");
}
Run Code Online (Sandbox Code Playgroud)

我们可以将输出定向到字符串

client.addProtocolCommandListener(new PrintCommandListener(System.out, true));
Run Code Online (Sandbox Code Playgroud)

但是,如何将文件夹列表作为文件夹实例而不是纯字符串输出?

java email imap jakarta-mail apache-commons

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

使用Apache Commons CLI库时如何获取参数

我正在使用Apache Commons CLI来处理Java中的命令行参数.

我已经声明了ab选项,我可以使用它来访问该值CommandLine.getOptionValue().

Usage: myapp [OPTION] [DIRECTORY]

Options:
-a        Option A
-b        Option B
Run Code Online (Sandbox Code Playgroud)

如何声明和访问DIRECTORY变量?

java apache-commons apache-commons-cli

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

SpringBoot:使用Apache Commons FileUpload上传大型流文件

我试图使用'流'Apache Commons File Upload API上传大文件.

我使用Apache Commons File Uploader而不是默认的Spring Multipart上传器的原因是当我们上传非常大的文件大小(~2GB)时它失败了.我在一个GIS应用程序上工作,这种文件上传很常见.

我的文件上传控制器的完整代码如下:

@Controller
public class FileUploadController {

    @RequestMapping(value="/upload", method=RequestMethod.POST)
    public void upload(HttpServletRequest request) {
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if (!isMultipart) {
            // Inform user about invalid request
            return;
        }

        //String filename = request.getParameter("name");

        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload();

        // Parse the request
        try {
            FileItemIterator iter = upload.getItemIterator(request);
            while (iter.hasNext()) {
                FileItemStream item = iter.next();
                String name = item.getFieldName();
                InputStream stream = item.openStream();
                if …
Run Code Online (Sandbox Code Playgroud)

spring apache-commons apache-commons-fileupload spring-boot

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

Apache的StringUtils.isBlank(str)与Guava的Strings.isNullOrEmpty(str):你应该经常检查空格吗?

使用是否有任何优势

StringUtils.isBlank(str) 
Run Code Online (Sandbox Code Playgroud)

来自Apache commons-lang.

VS

Strings.isNullOrEmpty(String string)
Run Code Online (Sandbox Code Playgroud)

来自Google Guava?

我想在Java项目中使用后替换数百个它们:

if(str == null || str.isEmpty())
Run Code Online (Sandbox Code Playgroud)

Guava的isNullOrEmpty似乎是我项目中上述用法的直接替代品.

但是,基于我对SO问题的阅读,更多人似乎使用了Apache的isBlank方法.

唯一的区别似乎是除了检查字符串是空还是空之外StringUtils.isBlank(str) 还检查空格.

通常,检查字符串是否为空白或者在代码中产生的结果与Guava更简单的检查相比是一个好主意?

java string apache-commons guava

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

查找实体集合中所有ID集合的最有效方法

我有一个实体:

public class Entity
{
    private long id;    
    private String data;

    public long getId() {
        return id;
    }

    public String getData() {
        return data;
    }
}
Run Code Online (Sandbox Code Playgroud)

和一组实体:

Collection<Entity> entities= ...
Run Code Online (Sandbox Code Playgroud)

找到Collection<Long>所有ID 的最有效方法是什么entities

java collections apache-commons guava

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

语音搜索印度语

我想在我的Android应用程序中以语音方式比较字符串.但这里的特例是,我想比较用英语写的印度语单词.例如,我想检查"Edhu""Adhu""Yethu"在语音上是否相等,它们在泰米尔语中都是相同的.但是使用英文脚本来写印度语的人使用不同的拼写来表达这个词.在这种情况下如何比较单词?

我试过了Levenshtein.但我不知道如何将它返回的数字转换为相等.

我尝试了Soundex,当这个词的第一个字母发生变化时,Soundex代码就不一样了.但它能够找出类似的声音部分.我不明白它是如何工作的.

 soundex.encode("Yethu")  (soundex.encode("Edhu"))  (soundex.encode("adhu")) 
 Y300                       E300                       A300
Run Code Online (Sandbox Code Playgroud)

java android soundex apache-commons phonetics

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

Tomcat 7生产服务器上的VerifyError可能是由Apache Commons Logging 1.0.4引起的

我在Tomcat 7上开发webapp.在我的本地版本的Tomcat 一切正常,但是当我在生产服务器上部署它时,它会抛出这个异常.

java.lang.VerifyError: (class: org/apache/commons/logging/impl/Log4JLogger, method: fatal signature: (Ljava/lang/Object;Ljava/lang/Throwable;)V) Incompatible object argument for function call
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2595)
    at java.lang.Class.getConstructor0(Class.java:2895)
    at java.lang.Class.getConstructor(Class.java:1731)
    at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:410)
    at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:529)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:235)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:209)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:351)
    at org.apache.fop.apps.FopFactory.<clinit>(FopFactory.java:68)
    at cz.soma.tomcat.generator.DokumentaceUtils.createPdfDocument(DokumentaceUtils.java:818)
    at cz.soma.tomcat.generator.FileFactory.createPdfDocument(FileFactory.java:58)
    at cz.soma.tomcat.generator.Generator.doPost(Generator.java:111)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
Run Code Online (Sandbox Code Playgroud)

当我尝试FopFactory.newInstance();(来自Apache FOP 1.0)时抛出错误.之后,它试图LogFactory.getLog(FopFactory.class);.它logClass.getConstructor(logConstructorSignature);被称为,其中logConstructorSignature包含一个String.class.(至少在我的本地机器上)

try …
Run Code Online (Sandbox Code Playgroud)

java apache-commons apache-fop tomcat7

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

Apache Commons CLI选项解析器可以忽略未知的命令行选项吗?

我正在编写一个Java应用程序,它接受使用Apache Commons CLI和GnuParser处理的命令行参数.由于没有兴趣进入的原因,我希望它默默地忽略未知的命令行选项而不是抛出ParseException,但我没有看到这样做的方法.我看到GnuParser.parse()上有一个stopAtNonOption布尔选项,但我想要的更像ignoreAtNonOption,它会在遇到未知令牌后继续处理选项.

我可以实现我自己的解析器来完成这个,但我很惊讶没有内置这个功能,所以我想我会在走这条路之前检查一下.

我正在谈论的示例代码:

try {
  CommandLine commandLine = parser.parse(options, args);
  // stopAtNonOption set to true (below) is also not what I want
  // CommandLine commandLine = parser.parse(options, args, true);
} catch (ParseException e) {
  LOG.error("error parsing arguments", e);
  throw new RuntimeException(e);
}
Run Code Online (Sandbox Code Playgroud)

java apache-commons apache-commons-cli

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

使用org.apache.commons.net.ftp.FTPClient保护FTP

有没有办法实现安全的FTP org.apache.commons.net.ftp.FTPClient

如果没有,Java的其他选项有哪些?

java ftp sftp ftp-client apache-commons

20
推荐指数
3
解决办法
7万
查看次数