Не могу разобраться с classpath java
Я учил жабу SE , необходимости подключать стороннюю библеотеку не было. Тут начал почитывать про сервлеты и соотвесвенно мне понадобилось подключить библиотеку javax.servlet. Использовать IDE и Maven я сознательно не хочу , мне нужно сначала понять как это делается ручками. У меня почему-то не работает java -cp . Я прописываю путь к библиотике сервлетов из томката :
java -cp C:\Program Files (x86)\Apache Software Foundation\Tomcat 10.0\lib\servlet-api.jar
Error: Could not find or load main class Files
Caused by: java.lang.ClassNotFoundException: Files
Кстати я когда занимался с java SE импортировал в свои классики стандартные классы типа java.lang ,java.net и т.п. , при том что переменной в"Системные переменные" CLASSPATH-а у меня не было, я еe создал только сейчас разбираясь с этой проблеммой. Что для стандартных библиотек она не нужна? Ну и когда я ее создал ,переменную CLASSPATH, прописал там путь к папки tomcat с библиотеками, перезапустил комп, ноль эфекта. Импорт у меня кст такой :
import javax.servlet.*;
Пробывал jakarta.servlet.*;
Тоже не работает.
Прописываю
javac -classpath "C:\Program Files (x86)\Apache Software Foundation\Tomcat 10.0\lib\servlet-api.jar";. App.java
App.java:8: error: cannot find symbol
public class App extends HttpServlet
^
symbol: class HttpServlet
App.java:3: error: package javax.servlet does not exist
import javax.servlet.*;
^
2 errors
Че за бред , почему такие сложности на ровном месте
Ответы (1 шт):
Фух ну вроде получилось, не знаю что точно повлияло на успех. То ли то , что я отключил том кат , но сам сервер не был включен , просто висел в баре, то ли то что я перенес библеотеку с том ката в папку с самим файлом. Короче работает только так :
javac -cp "C:\Program Files (x86)\Apache Software Foundation\Tomcat 10.0\webapps\my-app\src\main\java\com\mycompany\app\javax.servlet-api-4.0.1.jar"; App.java
java -cp "C:\Program Files (x86)\Apache Software Foundation\Tomcat 10.0\webapps\my-app\src\main\java\com\mycompany\app\javax.servlet-api-4.0.1.jar"; App.java
Hello World!
Может дело в том что когда томкат висел включенным , он не давал jave прочитать библеотеку? Но я же ее в тоже время спокойно читал с помощью архиватора. Я занес всю папку с библиотеками TomCat в переменную CLASSPATH!Более того я скопировал этот jar-ник в папку lib самой джабы и jdk как говорится на всякий.Почему оно автоматов не считывает. У меня есть одна мысля, я грешу на ноут на котором я работаю. Тут проблемы с правами доступа в самой операционки ( Windows 10) , пароль логин утеряны и ничего сделать не могу. Надо уже снести ее наверное и поставить unix какой-нибудь.
Оставлю совет для таких же компьютерных гениев типа меня мало ли пригодится. Так как в гугле слишком много инфы , там можно запутаться. Если надо скомпилить ваш файл с библеотекой : javac -cp "путь к библеотеке"; "имя вашего файла" В инете и в книгах было написано что после ";" надо ставить точку "." ,которая указывает что файл находится в настоящей директории, я ее не ставил и так работает если через cd в консоле войти в директорию с файлом. Еще много инфы типа java -cp .\classes "ваш путь" , и еще куча всякой диз инфы , легко запутаться, на деле все намного проще оказалось. Правда пришлось все-таки открыть пару книжек чтоб убедится как правильно делать, все-таки гугл та еще помойка на которой тяжело что-то найти. Кстати в книге Java Методы программирования Блинов и Романчик написано что сервлет надо компилировать именно через javac -cp , такое впечетление что по другому это не делается