Определить что использует java

Как узнать, что все классы / jar-файлы использует Java-приложение

Я из C/C++, и у меня есть работа exp на Java. Теперь я перехожу на язык Java (поскольку я чувствую, что должен был сделать это долгое время назад). В C/C++, если приложение связано с внешними разделяемыми библиотеками (.so,.a,.sl), мы можем знать эту зависимость с помощью команды ld. Мой вопрос в том, имеет ли сервер.jar аналогичные цели? Например, если java-приложение зависит от 1.jar, 2.jar и т.д., Эти файлы jar «привязаны» навсегда к Java-приложению (в результате чего файлы Bigger, например.a, становятся популярными для приложения c/C++, что приводит к большему исполняемый файл) или динамически (такие же, как.so/.sl, загружаются «на лету», а не часть основного приложения c/C++). Кроме того, можно ли перечислять все файлы jar, от которых зависит приложение java? В java по умолчанию приложение импортирует пакет java.lang. *, Этот пакет находится внутри файла jar? Если да, то какие файлы jar соответствуют этому пакету? Большое спасибо! Vipin

На первый вопрос можно ответить простым экспериментом. Вопрос второй, нет, поэтому существуют такие вещи, как Maven. Вопрос третий, проверьте каталоги установки JDK или JRE. Ищите файлы jar. Grep через их перечисленное содержимое. Ответы на вопросы!

Ответ может быть еще более сложным, если учесть, что [1] у вас могут быть разные загрузчики классов, и [2] у вас могут быть дублированные классы из разных jar-файлов, и [3] вы можете указать класс, который будет динамически вызываться с помощью forName () при выполнении. время

Читайте также:  Http nnm club to forum tracker php обойти блокировку

2 ответа

Вы можете проверить файл манифеста в папке META-INF. он должен содержать декларацию для зависимостей приложения. примером будет, class-path — это требования библиотеки библиотеки:

manifest-Version: 1.0 Built-By: melt321 Build-Jdk: 1.6.0_35 Class-Path: dependency-jars/log4j-1.2.17.jar Created-By: Apache Maven Main-Class: com.example.org.Tester Archiver-Version: Plexus Archiver 

или если jar использует maven, вы можете проверить pom.xml

Встраиваются ли вещи в ваше приложение? Точно нет. Это ваша ответственность как разработчика и развертывателя, чтобы отслеживать, какие файлы jar необходимы приложению.

Библиотека по умолчанию (как определено в документах API JDK) содержится в файле jar, который развертывается как часть установки JVM, поэтому вам никогда не придется отправлять их.
Аналогично, для Java EE существует стандартный набор, который сервер должен предоставить, определенный в документах API Java EE API, которые вам также не нужно отправлять.
Подумайте об этих классах как динамических библиотеках, которые поставляются с операционной системой при написании приложения C. Вы не отправляете их, вы полагаетесь на то, что они там. Если это не так, вы получите сообщение об ошибке, что операционная система (в случае Java JVM) является неправильной версией.
Существуют некоторые инструменты, которые могут извлекать информацию об импорте из классов Java. И с этой информацией можно было бы взять каталог, полный файлов jar, и написать программное обеспечение, которое будет определять, какой из них вам нужен, но вы должны просто отслеживать это при начале написания.

Ещё вопросы

  • 0 $ обновить метод PUT в Angular?
  • 0 явный пример создания шаблона класса c ++ на macos, не работает на ubuntu
  • 1 Конвертировать категорические признаки (Enum) в H2o в Boolean
  • 1 Гравитация и много частиц
  • 0 Как перенаправить пользователя на страницу с ошибкой из контроля входа при вводе неверного имени пользователя и / или пароля?
  • 0 Datepicker не превышает текущую дату
  • 0 как создать дочерние узлы с помощью запроса php xpath
  • 1 javascript document.getElementsbyClassName не является функцией
  • 1 JavaScript — среднее число из массива с использованием функции Reduce
  • 1 Соедините 2 отношения внешнего ключа в одном объекте в запросе
  • 0 Как найти значение, хранящееся в массиве из базы данных в php
  • 1 MusicPlayer повтор музыки «X» [дубликаты]
  • 0 Невозможно войти в phpMyAdmin
  • 0 Соединить три таблицы MySQL, где
  • 0 Дата-Время в Qt
  • 1 Получение нескольких подстрок из одной строки C #
  • 0 jatery datatables изменяет класс td для пустой таблицы
  • 1 нулевой указатель tablayout.newtab
  • 1 Ansible: изменить интерпретатор python при делегировании
  • 0 Как сохранить возвращаемые значения из вызова .each в массив
  • 1 как 32-битный процессор обрабатывает 64-битное двойное значение?
  • 1 Транспортир Javascript не выполняется в последовательности
  • 1 Автоматическая установка плагинов в Android Studio
  • 1 Как транслировать канал YouTube (например, Mecca Live) в своем приложении?
  • 0 Когда использовать & в C ++ при объявлении переменных?
  • 0 Необычное поведение кнопки возврата jquery mobile, phonegap / cordova
  • 0 Агрегация не работает в Mongoose с Match и Group
  • 1 получить записи с датой приема в диапазоне
  • 1 смещение фиксации потоковой передачи pyspark к kafka
  • 0 Как мне преобразовать ответ $ http.post в $ resource в angularjs?
  • 0 Получить значение в 2D векторе с заданным ключом
  • 0 Правильное использование YouTube URL Regex
  • 1 Используйте Google PaymentRequest на локальном сайте, работающем в эмуляторе Android
  • 0 C ++ Help. Массивы не работают с целыми числами
  • 1 правильный ООП и гибкость между классами в Java
  • 1 Должен ли Pandas DatetimeIndex.weekday возвращать индекс или пустой массив?
  • 1 Получение значения с нулем при попытке объединить orderByChild () и startAt ()
  • 0 Использование локальной переменной функции в main
  • 1 Метод, который принимает строго типизированное имя свойства в качестве параметра
  • 0 каждый цикл jQuery
  • 1 Изменить параметр URL
  • 1 Шрифт C3.js tootltip
  • 1 Как изменить / обновить данные и состояние записи объекта Dynamics crm с Активного на Неактивный с помощью Javascript
  • 0 Не работает подпапка движка приложения Google — PHP
  • 1 Эффективный для памяти способ хранения значений bool и NaN в пандах
  • 0 Как запустить функцию непосредственно перед отправкой формы?
  • 1 преобразовать данные массива из объекта / float в int для использования в методе
  • 0 Распечатать / показать пароль пользователя в mysql CLI
  • 1 Pyspark — отдельные записи на основе 2 столбцов в датафрейме
  • 0 Заставить AngularJS ui-router / app ждать данные $ http для предотвращения FOUC
Читайте также:  Указатель на функцию си шарп

Источник

Как узнать, какая программа работает в java [duplicate]

И если вам нужно, чтобы это было нечувствительным к регистру, вы должны использовать регулярное выражение следующим образом:

12 ответов

Загрузить Process Explorer Sysinternal. Это диспетчер задач, намного более мощный, чем собственный менеджер Windows.

. Одна из его функций заключается в том, что вы можете увидеть все ресурсы, которые использует каждый процесс (например, разделы реестра, каталоги на жестких дисках, именованные каналы и т. д.). Таким образом, просмотр ресурсов, которые выполняется каждым процессом java.exe, может помочь вам определить, какой из них вы хотите убить. Обычно я обнаруживаю, ища тот, который использует определенный файл каталога журнала.

Process Explorer также может показать вам команду, которая запустила процесс java.exe. Обычно это будет содержать имя файла jar или имя класса. – Jay R. 16 September 2008 в 23:41

Запустите jps -lv , который показывает PID и командные строки всех запущенных Java-процессов.

Определите PID задачи, которую вы хотите убить. Затем используйте команду:

, чтобы убить неправильный процесс.

Убейте эту команду вместо необходимости taskkill: jps -lv | найти «что-то» | WMIC PROCESS, где name = «java.exe» Удалить – djangofan 11 December 2012 в 01:39

Мне нравится этот ответ. К сожалению, хотя jps не распределяется с JRE , что является ограничением для того, где я хотел бы его использовать. – simo.37920 20 October 2014 в 03:41

Если вы используете Java 6, попробуйте jvisualvm из каталога bin JDK.

Я бы предложил загрузить Process Explorer из Sysinternals и посмотреть более подробно на различные процессы java.exe, чтобы вы могли лучше понять, какой из них можно убить.

Это очень интуитивно понятно, и вы можете найти процессы java.exe и щелкнуть правой кнопкой мыши и перейти к их свойствам, оттуда вы можете увидеть их командную строку, время создания и т. д., которые могут помочь вам найти процесс, который вы хотите убить.

Если вы не можете запустить GUI-приложение, такое как ProcessExplorer, и вы ищете аргументы «Командная строка» для процессов, вы можете использовать «wmic» через командную строку. Например:

wmic PROCESS get Processid,Caption,Commandline 

Если вы хотите найти конкретный процесс, вы можете сделать это:

wmic PROCESS where "name like '%java%'" get Processid,Caption,Commandline 

. Вывод этого будет показывать вам все аргументы командной строки процессов, таких как «java».

Это лучший способ сделать это, поскольку вы можете использовать «FIND.exe». чтобы отфильтровать этот список, а затем передать его в «WMIC . delete & quot; чтобы убить процесс. Это «чистый» без каких-либо внешних программ. – djangofan 11 December 2012 в 01:37

Вывод можно сделать более читаемым, используя флаг /format:list (например, когда Commandline длинный). – anishpatel 16 May 2017 в 22:52

Если приложение вообще не отвечает, то Process Explorer — хороший вариант.

Если это ответ, но не умирающий, иногда возникают задачи диспетчера задач, а затем перемещение другого диалога по java-процесс даст вам ключ. Процесс java, который обрабатывает циклы процессора для перерисовки, — это тот, который вы ищете.

Вы пытались использовать Process Explorer из SysInternals? Это дает гораздо лучшее представление о том, что работает в процессе. Доступно бесплатно здесь: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Вы можете попробовать открыть диспетчер задач Windows, перейдя на вкладку «Приложения», щелкнув правой кнопкой мыши приложение и выбрав «Перейти к процессу». Это автоматически выделит соответствующий процесс на вкладке Процессы.

Использование jps в JDK даст вам больше информации. Дополнительная информация отображается с параметрами -m, -l и -v.

jps отлично. Это решение позволит вам убить соответствующие процессы Java в сценарии, который Process Explorer не будет. – Dave Webb 12 June 2009 в 15:19

Вместо использования стороннего инструмента вы также можете сделать довольно хорошее предположение, просмотрев все столбцы в диспетчере задач, если вы точно знаете, что представляют собой различные процессы Java в вашей системе. На вкладке Процессы используйте View-> Select Columns и добавьте PID, CPU Time, VM Size и Thread count. Знание того, что делает этот процесс, должно помочь сузить его.

Например, в приложении клиент-сервер сервер, скорее всего, будет использовать больше памяти, иметь больше потоков и использовать больше времени процессора, потому что он работает дольше. Если вы убиваете процесс, потому что он застрял, он может просто использовать больше CPU прямо сейчас.

MAX java heap memory обычно непосредственно отражается в размере VM. Поэтому, если вы используете флаги -Xmx, процесс с более крупным параметром будет иметь больший размер виртуальной машины.

Источник

Как узнать, использует ли сайт Java?

Какой быстрый способ узнать, использует ли веб-сайт Java (например, в апплете Java). Одним из способов было бы сканировать исходный код страницы на наличие подсказок, но я ищу более быстрый способ. Если возможно, не метод, который опирается на расширение браузера. (Я использую Firefox, но приветствуются и советы для других браузеров.) PS: я не заинтересован в блокировке Java или аналогичных. Я просто ищу быстрое (но правильное) указание, если страница использует Java.

6 ответов 6

Если есть встроенный Java-апплет, вы, как правило, будете иметь ссылки на .class на странице. Если вы используете аддон Firefox, запуск NoScript Java будет заблокирован.
Если они заблокированы, вы можете разрешить NoScript разрешать выполнение сценариев, запускающих апплет
(обычно со значком строки состояния альтернативный текст) Если вы также установили дополнение Adblock Plus , нажмите на его значок (Adblock Plus) в меню Firefox откроет окно блокируемых элементов в браузере. Это покажет все файлы классов, которые разрешены. Вы можете снова явно заблокировать определенные Java-апплеты здесь. Обновление: вы можете ограничиться только надстройкой AdBlock Plus и нажать на красную иконку, чтобы увидеть, есть ли какие-либо java-файлы, связанные. Далее ваш комментарий в вопросе.

  • они видят, что другой браузер также падает так же для тех же сайтов? (IE, Chrome)
  • Вы пробовали для отрицательного случая, когда сайт на основе Java не дает сбой Firefox?
  • у этого firefox есть много других установленных расширений (возможно, экспериментальных)?

Update2: на ваши второстепенные комментарии.
Если это обнаружение Java, что вас интересует. Достаточно установить только дополнение AdBlock Plus. Вы всегда можете просто открыть «блокируемые элементы на текущей странице», находясь на сайте, и ввести «класс» в строке поиска.

Источник

Оцените статью