简体   繁体   中英

How do I figure out what namespace I need to import from a java library?

I'm writing some clojure code, and I'm relying on Joda time for time handling. The problem is that I don't know what to import and the documentation isn't terribly clear about it. Now I know that somebody here can probably give me the correct answer in less than 5 seconds, but I'd rather know how to figure this one out on my own (aside from pouring through the docs until I find the correct answer).

If I were doing this in Python, I'd import the top-level package and use a combination of dir and help to figure out what I need to import. Is there any way to do this in clojure? Or are there any other kinds of java tools to figure this out? I'd prefer something that's command-line oriented.

Normally I'd go with David Grant's answer, but if you can't find any JavaDoc (!), but you have a jar file, you can use the jar utility to list the files in the jar.

The directory the class files are in map directly to its package name. For example, jar -tf joda-time-1.6.jar | more jar -tf joda-time-1.6.jar | more lists DateTime.class as org/joda/time/DateTime.class ; DateTime is in the org.joda.time package.

In the same way that dir and help will examine the documentation of packages in Python, useful information in Java can be gleaned from reading the Javadocs for a particular API. In the case of Joda Time, the web site has a direct link to the generated documentation, here:

http://joda-time.sourceforge.net/api-release/index.html (see the bottom left frame)

I can't think of anything off hand that is directly comparable to what you ask, since unless you ask the classloader for a particular class, the classloader won't load it, and you won't be able to find it.

Bill Clementson编写了一小段代码 ,可以帮助您查看REPL中的javadoc文档。

http://dishevelled.net/Generating-Clojure-import-lines-using-SLIME.html Makes it really easy to look up imports. Personally I just use the clojure function find-classes defined there from the REPL.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM