@ Никита Рыбак: AstroGrep для Windows - наш друг: http://astrogrep.sourceforge.net/
Вы всегда можете добавить справочную библиотеку в свой проект в Eclipse, а затем в обозревателе пакетов, просто разворачивайте пакеты в файле JAR, пока не найдете нужный класс.
используйте это:
public class Main {
private static final String SEARCH_PATH = "C:\\workspace\\RPLaunch";
private static String CLASS_FILE_TO_FIND =
"javax.ejb.SessionBean";
private static List<String> foundIn = new LinkedList<String>();
/**
* @param args the first argument is the path of the file to search in. The second may be the
* class file to find.
*/
public static void main(String[] args) {
File start;
new Scanner(args[0]);
if (args.length > 0) {
start = new File(args[0]);
if (args.length > 1) {
CLASS_FILE_TO_FIND = args[1];
}
} else {
start = new File(SEARCH_PATH);
}
if (!CLASS_FILE_TO_FIND.endsWith(".class")) {
CLASS_FILE_TO_FIND = CLASS_FILE_TO_FIND.replace('.', '/') + ".class";
}
search(start);
System.out.println("------RESULTS------");
for (String s : foundIn) {
System.out.println(s);
}
}
private static void search(File start) {
try {
final FileFilter filter = new FileFilter() {
public boolean accept(File pathname) {
return pathname.getName().endsWith(".jar") || pathname.isDirectory();
}
};
for (File f : start.listFiles(filter)) {
if (f.isDirectory()) {
search(f);
} else {
searchJar(f);
}
}
} catch (Exception e) {
System.err.println("Error at: " + start.getPath() + " " + e.getMessage());
}
}
private static void searchJar(File f) {
try {
System.out.println("Searching: " + f.getPath());
JarFile jar = new JarFile(f);
ZipEntry e = jar.getEntry(CLASS_FILE_TO_FIND);
if (e == null) {
e = jar.getJarEntry(CLASS_FILE_TO_FIND);
}
if (e != null) {
foundIn.add(f.getPath());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Очень часто я наследую код, который жалуется на несуществующий класс, и это происходит потому, что jar-файл не включен в classpath.
Если его нет в classpath, то, скорее всего, у вас вообще нет самого JAR-файла. Поиск с помощью встроенной функции Eclipse Ctrl+Shift+T
мало чем поможет. Обычно по имени пакета можно "догадаться", откуда в интернете можно взять JAR-файл. Например, класс org.apache.commons.lang.XXX
доступен по адресу http://commons.apache.org/lang.
Для неочевидных я сам использую http://grepcode.com, поисковик исходного кода JAR.
Я обычно использую для этого bash: grep -lr "ClassName".
Уловка в том, что имена никак не кодируются. Вы можете открыть файл jar в текстовом редакторе, и вы увидите их. (Вы даже можете включить имя пакета в поисковый запрос.)
Я подозреваю, что есть и эквивалент Windows.
В тех же строках, что и ответ BalusC (я еще не могу публиковать комментарии и ссылаться на 2 URL-адреса, без репутации :(), вы можете найти банку благодаря этим двум механизмам поиска банок: - http://www.jarfinder.com/ - findjar