Java库搜索顺序

时间:2013-08-02 13:24:48

标签: java shared-libraries preference

背景/示例(但问题可能比这更广泛):

我正在尝试编写一个访问Google AppEngine服务器的Java应用程序。要为此设置项目,我按照接受的答案中列出的步骤进行了操作:

Developing a Java Application that uses an AppEngine database

我现在遇到的问题是我试图在Java客户端应用程序中执行HttpURLConnection - 请求(即不在AppEngine服务器代码中),但Google的AppEngine库似乎已经取代了Java这个连接的版本有自己的urlFetch() - 实现。这导致我收到以下错误:“找不到API包'urlfetch'或调用'Fetch()'。”。

实际问题:

是什么决定了Java通过库查找所需类实现的顺序?有没有办法修改此顺序(特别是在Eclipse中),以便实际的JRE函数优先于所需的第三方库。或者,在上面给出的示例中,Url的实现是否可能存在一些特殊情况,但是无法通过指定库顺序来解决这个问题?

更新

原来我看到的问题与加载类的顺序无关。 AppEngine服务器代码显式调用setContentHandlerFactory(...)以在执行期间而不是在库加载时(see here for a fix to this specific issue)注册自己的处理程序。所以,虽然我的“实际问题”可能仍然存在,但实际上我还没有遇到过重要的情况......

2 个答案:

答案 0 :(得分:1)

您可能需要定义自定义ClassLoader

另外,请看一下这个answer

答案 1 :(得分:1)

在Eclipse中,您可以调整类路径顺序。右键单击您的项目,选择Properties,Java Build Path,然后单击“Order and Export”选项卡。但是,当然,这在Eclipse外部运行时不会影响您的程序。