Здравствуйте. Решил написать небольшую программу, раз в секунду получающую информацию об активном окне в Винде и делающую некоторые подсчеты. Начал разбираться с jna и при попытке определить какое окно у меня активно столкнулся со следующей проблемой: При запуске программы из IntelliJ Idea программа работает прекрасно, при попытке запустить скомпилированный файл через консоль (или .jar файл через консоль) выдает список ошибок:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/platform/win32/User32 at Program.getActiveWindowTitle(Program.java:11) at Program.main(Program.java:7) Caused by: java.lang.ClassNotFoundException: com.sun.jna.platform.win32.User32 at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 2 more

Ниже прилагаю код программы:

import com.sun.jna.Native; import com.sun.jna.platform.win32.User32; import com.sun.jna.platform.win32.WinDef.HWND;

public class Program { public static void main(String[] args) { System.out.println("title is " + getActiveWindowTitle()); } private static String getActiveWindowTitle() { HWND fgWindow = User32.INSTANCE.GetForegroundWindow(); int titleLength = User32.INSTANCE.GetWindowTextLength(fgWindow) + 1; char[] title = new char[titleLength]; User32.INSTANCE.GetWindowText(fgWindow, title, titleLength); return Native.toString(title); } }

задан 08 Апр, 19:00

EgoRed's gravatar image

EgoRed
11
одобрено: 0%

изменено 08 Апр, 19:01


Все, спасибо, я разобрался. Суть в том, что при добавлении библиотек в область обзора IntelliJ Idea она их сама записывает в свою переменную и при запуске автоматически пишет -classpath (путь до библиотеки). Разумеется при запуске через cmd такого не прописано, следовательно java не знает, куда обращаться. Фиксится это добавлением полного имени библиотеки в глобальную переменную среды CLASSPATH (можно вместо этого перед каждым запуском писать флаг -classpath (полное имя библиотеки), так тоже работать будет).

ссылка

опубликован 09 Апр, 06:08

EgoRed's gravatar image

EgoRed
11
одобрено: 0%

Ваш ответ
включить просмотр

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×293
×13
×1
×1
×1

Задан: 08 Апр, 19:00

Просмотров: 69 раз

Отредактирован: 09 Апр, 06:08