【问题标题】:How to set classpath on Talend Open Studio如何在 Talend Open Studio 上设置类路径
【发布时间】:2018-03-05 11:48:43
【问题描述】:

我创建了一个依赖于Apache HTTP Components 的例程,因此我下载了 jar 文件并将这些文件添加到构建路径中。

我已经在 Java\Build Path 下设置了 Classpath VariablesUser Libraries,但它仍然不起作用。

我的代码编译没有任何错误,但运行失败,出现以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/RedirectStrategy
    at routines.downloadXls.start(downloadXls.java:10)
[...]

这段Java代码如下,它用Eclipse运行:

private CloseableHttpClient createHttpClient() {
        HttpClientBuilder builder = HttpClientBuilder.create();
        httpCtx.setAttribute(HttpClientContext.COOKIE_STORE, store);
        return builder.setRedirectStrategy(LaxRedirectStrategy.INSTANCE).build();
    }

我已经看到了similar question on talend community,但它对我没有帮助。

有什么建议吗?

谢谢

【问题讨论】:

    标签: java talend apache-httpcomponents


    【解决方案1】:

    您需要使用tLibraryLoad 组件(每个 jar 一个)将您的 jar 添加到您的 Talend 作业中。

    tLibraryLoad
            |
    OnSubjobOk
            |
    Code using apache components
    

    当您构建作业时,jar 将与它捆绑在一起并添加到您的类路径中(在 .bat 和 .sh 启动器中)。
    我注意到您正在代码中设置 cookie,也许如果您提供有关您的要求的更多详细信息,我可以推荐使用专用 Talend 组件的解决方案,因为最好尽可能使用本机组件(或者您可以提出单独的问题)。

    【讨论】:

    • 感谢您的回答...但我还需要在Java\Build Path 下设置Classpath Variables User Libraries?或者用tLibraryLoad 添加每个jar 文件就足够了?谢谢
    • PS:我必须发出 2 个 http 发布请求(登录和下载)共享 cookie 和会话,它似乎不适用于 tHttpRequest
    • tLibraryLoad 添加你需要的所有jar 就足够了。您提到的那些设置是从 Eclipse 继承的,并由 Talend 本身使用 afaik
    • 如果我理解正确的话,你想发出一个登录请求,并使用服务器发送的cookie发出另一个请求;这是我从响应(Set-cookie 标头)中获取 cookie 的一个简单示例:imgur.com/a/N0QSk 请随时提出有关此问题的问题,我很乐意试一试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 2022-01-02
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多