То, что вы получаете, является ссылкой.
Вам нужно сделать .once ('значение'), чтобы получить снимок по этой ссылке, затем выполнить .val () для этого снимка, чтобы получить данные
async print(key)
{
const name = await firebase.database().ref('users/'+key).once('value')
console.log(name.val()))
}
Eclipse может это сделать, просто создайте (временный) проект и поместите свои библиотеки в путь к классам проектов. Тогда вы можете легко найти классы.
Еще один инструмент, который мне приходит в голову, - это Java Decompiler. Он может открывать сразу много банок, а также помогает находить классы.
В основном, позвольте мне взглянуть на корень возникшей проблемы. Если вы работаете над новым проектом - почему бы не прийти к PM или техническому руководителю и не спросить его - как он отслеживает зависимости?
ClassFinder является программой, это разработано для решения этой проблемы. Это позволяет Вам искать рекурсивно через каталоги и файлы банки для нахождения всех экземпляров класса, соответствующего шаблону. Это записано в Java, не Python. Это имеет хороший GUI, который помогает использовать. И это работает быстро. Этот выпуск предварительно компилируется в выполнимой банке, таким образом, Вы не должны создавать его из источника.
Загрузка это здесь: ClassFinder 1.0
Вы можете найти класс в каталоге, полном банок с небольшой оболочкой:
Ищем класс "FooBar":
LIB_DIR=/some/dir/full/of/jarfiles
for jarfile in $(find $LIBDIR -name "*.jar"); do
echo "--------$jarfile---------------"
jar -tvf $jarfile | grep FooBar
done
Это должно быть:
C:\prog\>scala
Welcome to Scala version 2.7.5.final (Java HotSpot(TM) Client VM, Java 1.6.0_16).
Type in expressions to have them evaluated.
Type :help for more information.
scala> val gu: Array[Byte] = Array(18, 19, 20)
gu: Array[Byte] = Array(18, 19, 20)
Это не является неизменным. Seq будет шагом в этом направлении, даже если это всего лишь черта (как Кристофер упоминает в комментариях), добавляющая конечные последовательности элементов. Список Scala будет неизменным.
затем:for /R %G in (*.jar) do @jar -tvf "%G" | find "ClassName" > NUL && echo %G
Вот как это работает:
for / R% G в (* .jar) do
- цикл по всем файлам JAR, рекурсивный обход каталогов; сохранить имя файла в% G. @jar -tvf "% G" |
- запустить команду Java Archive, чтобы вывести список всех имен файлов в данном архиве и записать результаты в стандартный вывод; символ @
подавляет печать вызова команды. find "ClassName"> NUL
- поиск в стандартном вводе, передаваемом из вывода команды jar, для данного имени класса; это установит ERRORLEVEL
в 1, если есть совпадение (в противном случае - 0). && echo% G
- если ERRORLEVEL
не равно нулю, запишите файл архива Java имя в стандартный вывод (консоль). Когда я столкнулся с этой проблемой, я не знал об этой утилите, поэтому написал следующее:
public class Main {
/**
*
*/
private static String CLASS_FILE_TO_FIND =
"class.to.find.Here";
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) {
if (!CLASS_FILE_TO_FIND.endsWith(".class")) {
CLASS_FILE_TO_FIND = CLASS_FILE_TO_FIND.replace('.', '/') + ".class";
}
File start = new File(args[0]);
if (args.length > 1) {
CLASS_FILE_TO_FIND = args[1];
}
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());
}
} else {
foundIn.add(f.getPath());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Проверить JBoss Tattletale ; хотя я никогда не использовал его лично, похоже, это тот инструмент, который вам нужен.
Ко всему вышесказанному следует добавить одно: если у вас нет доступного исполняемого файла jar (он поставляется с JDK, но не с JRE), вы можете использовать unzip (или WinZip или что-то еще), чтобы добиться того же.