==
выполняет контрольную проверку равенства, ссылаясь на то, что 2 объекта (строки в этом случае) относятся к одному и тому же объекту в памяти.
Метод equals()
будет проверять, будет ли содержимое или состояния двух объектов одинаковы.
Очевидно, что ==
работает быстрее, но во многих случаях может (может) давать ложные результаты, если вы просто хотите сказать, имеет ли 2 String
s тот же текст.
Определенно рекомендуется использовать метод equals()
.
Не беспокойтесь о производительности. Некоторые способы поощрения использования String.equals()
:
String.equals()
сначала проверяет ссылочное равенство (используя ==
), и если две строки одинаковы по ссылке, дальнейший расчет Выполняется! String.equals()
будет проверять длину строк. Это также является быстрой операцией, поскольку класс String
хранит длину строки, не нужно считать символы или кодовые точки. Если длины отличаются, дальнейшая проверка не выполняется, мы знаем, что они не могут быть равными. Когда все сказано и даже если у нас есть гарантия, что строки являются стажерами, использование метода equals()
все еще не является издержками, которые можно было бы подумать, определенно рекомендуемым способом. Если вам нужна эффективная проверка ссылок, используйте перечисления, где гарантируется спецификацией и реализацией языка, что одно и то же значение перечисления будет одним и тем же объектом (по ссылке).
В Java, когда вы иногда запускаете JVM из командной строки с помощью исполняемого файла java и пытаетесь запустить программу из файла класса с открытым статическим void main (PSVM), вы можете столкнуться с ошибкой ниже, хотя classpath для JVM является точной и файл класса присутствует в пути к классам:
Error: main class not found or loaded
Это происходит, если файл класса с PSVM не может быть загружен. Одна из возможных причин этого заключается в том, что класс может реализовывать интерфейс или расширять другой класс, который не находится в пути к классам. Обычно, если класс не находится в пути к классам, то выдаваемая ошибка указывает как таковой. Но, если используемый класс расширен или реализован, java не может загрузить сам класс.
Ссылка: https://www.computingnotes.net/java/error-main-class -на-нашли или загружено /
При запуске java
с опцией -cp
, как описано в Windows PowerShell, вы можете получить ошибку, которая выглядит примерно так:
The term `ClassName` is not recognized as the name of a cmdlet, function, script ...
Чтобы PowerShell принял команду, аргументы опции -cp
должны содержаться в кавычках, как в:
java -cp 'someDependency.jar;.' ClassName
Формирование команды таким образом должно позволить Java обрабатывать аргументы classpath правильно.
Местоположение файла файла: C: \ test \ com \ company
Имя файла: Main.class
Полностью имя класса: com.company.Main
Командная строка:
java -classpath "C:\test" com.company.Main
Обратите внимание, что путь класса не включает \ com \ company
Это конкретный случай, но поскольку я пришел на эту страницу, ища решение и не нашел его, я добавлю его здесь.
Windows (проверена с 7) не принимать специальные символы (например, á
) в именах классов и пакетов. Linux, однако.
Я узнал об этом, когда я построил .jar
в NetBeans и попытался запустить его в командной строке. Он работал в NetBeans, но не в командной строке.
В моем случае я получил сообщение об ошибке, потому что у меня были смешанные имена пакетов в верхнем и нижнем регистре в системе Windows 7. Изменение имен пакетов для всех нижних регистров разрешило проблему. Также обратите внимание, что в этом случае я не смог скомпилировать файл .java в файл .class; он просто не будет запускаться из того же каталога (под-под-под).
Я получил эту ошибку после выполнения mvn eclipse:eclipse
Это немного испортило мой файл .classpath
.
Если бы изменить строки в .classpath
из
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
<classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
to
<classpathentry kind="src" path="src/main/java" output="target/classes" />
<classpathentry kind="src" path="src/main/resources" excluding="**" output="target/classes" />
В моем случае возникла ошибка, потому что я дал имя исходного файла вместо имени класса.
Нам нужно предоставить имя класса, содержащее основной метод, интерпретатору.
Если ваш основной метод находится в классе под пакетом, вы должны запустить его по иерархическому каталогу.
Предположим, что есть файл исходного кода (Main.java):
package com.test;
public class Main {
public static void main(String[] args) {
System.out.println("salam 2nya\n");
}
}
Для запуска этого кода вы должны поместить Main.Class
в пакет, например каталог ./com/test/Main.Java
. И в корневом каталоге используйте java com.test.Main
.
Иногда, в некоторых онлайн-компиляторах, которые вы, возможно, пробовали, вы получите эту ошибку, если вы не пишете public class [Classname]
, а просто class [Classname]
.
public
, спецификации Java не требуют этого, и также не используется стандартная команда Oracle / OpenJDK java
.
– Stephen C
23 July 2018 в 22:42
Сначала установите путь с помощью этой команды:
set path="paste the set path address"
Затем вам нужно загрузить программу. Введите «cd (имя папки)» в сохраненный диск и скомпилируйте его. Например, если моя программа, хранящаяся на диске D, введите «D:», нажмите enter и введите «cd (имя папки)».
if "cd" helps then it by luck rather than by judgement
. Это неверно (я считаю), поскольку java использует текущий каталог .
как часть пути к классам по умолчанию.
– GKFX
31 March 2014 в 16:16
Если ваше исходное кодовое имя HelloWorld.java, ваш скомпилированный код будет HelloWorld.class
.
Вы получите эту ошибку, если вы вызываете ее, используя:
java HelloWorld.class
Вместо этого используйте это:
java HelloWorld
Я также сталкивался с подобными ошибками при тестировании соединения JDBC Java MongoDB. Я думаю, что хорошо подвести итог моему окончательному решению коротким, чтобы в будущем кто-то мог напрямую изучить две команды и хорошо продолжать дальше.
Предположим, вы находитесь в каталоге, где ваш файл Java и внешний (файлы JAR).
Скомпилировать:
javac -cp mongo-java-driver-3.4.1.jar JavaMongoDBConnection.java
Run:
java -cp mongo-java-driver-3.4.1.jar: JavaMongoDBConnection
javac -classpath . HelloWorld.java
сработало бы! И это лучшее решение в вашем случае.
– Stephen C
22 August 2015 в 10:15
java
не смотрел $ CLASSPATH (потому что вы использовали -classpath или -jar) или 2) параметр classpath не был установлен в среде, которая не была в эффект i> в контексте выполнения java
; например потому что вы не "источник" файл, в который добавлены команды setenv в правой оболочке.
– Stephen C
15 March 2016 в 14:14
Main
не находится в файле JAR. -cp lib.jar;
означает то же, что и -cp lib.jar;.
, то есть текущий каталог включен в путь к классам.
– Stephen C
22 September 2016 в 07:58
-cp .
не требуется, потому что если $CLASSPATH
не задано, то .
- это путь по умолчанию.
– Stephen C
7 March 2017 в 04:37
echo %CLASSPATH%
?) И нет, я не могу проверить, потому что у меня нет ПК с ОС Windows.
– Stephen C
5 May 2017 в 07:24
-classpath
и -cp
не используются, а CLASSPATH
не задано, то путь к пользовательскому классу состоит из текущего каталога (.
). & quot; i> Ссылка - docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html
– Stephen C
5 May 2017 в 07:27
cd
в src
, а затем запустить команду java ../bin com.blah.blah.MyClass
, которая работала для меня. Так что спасибо за подсказку!
– tamj0rd2
21 July 2017 в 12:28
main
из среды IDE. (И для некоторых IDE вам не нужно i> настроить панель запуска, чтобы это произошло, например, run
Eclipse будет найти i> класс с методом main
для вы.
– Stephen C
22 August 2017 в 04:52
Could not find or load main class ...
. Вот как я приехал на этот пост :)
– cepix
22 August 2017 в 17:41
main
, вам просто не предлагается опция «Использовать и использовать Java» в контекстном меню.
– Stephen C
22 August 2017 в 22:44
JavaMongoDBConnection
не имеет пакета, и 2) вы не меняете каталог. Это, мягко говоря, хрупкое. И, не объясняя проблемы, он заставит новичков попробовать этот подход в ситуациях, когда он не будет работать . Короче говоря, он поощряет «методы программирования вуду»: ru.wikipedia.org/wiki/Voodoo_programming
– Stephen C
27 January 2018 в 01:25
Я потратил приличное время, пытаясь решить эту проблему. Я думал, что я как-то неправильно установил свой путь к классу, но проблема заключалась в том, что я набрал:
java -cp C:/java/MyClasses C:/java/MyClasses/utilities/myapp/Cool
вместо:
java -cp C:/java/MyClasses utilities/myapp/Cool
Я думал, что значение полностью квалифицированного означает укажите полное имя пути вместо полного имени пакета.
utilities.myapp.Cool
или независимо от его имени пакета, если таковой имеется.
– user207421
7 February 2018 в 09:15
В соответствии с сообщением об ошибке («Не удалось найти или загрузить основной класс») существуют две категории проблем:
Основной класс не может быть найден, если в имени полного класса или его неправильном синтаксисе указан или он не существует в предоставленном пути к классам.
Основной класс не может быть загружен, когда класс не может быть запущен, обычно основной класс расширяет другой класс и этот класс не существует в предоставленном пути к классам.
Например:
public class YourMain extends org.apache.camel.spring.Main
Если верблюжья пружина не включена, эта ошибка будет сообщена.
extends
). Я только что усвоил, что, когда основной класс не может загрузить i>, потому что он расширяет другую, которая не может быть найдена i>, java не сообщает, какой фактический класс был не найден (в отличие от NoClassDefFoundError
). Так что да, это случается, и это ситуация с волосами, когда вы этого не знаете.
– Hugues M.
31 May 2017 в 13:37
Вам действительно нужно сделать это из папки src
. Там вы вводите следующую командную строку:
[name of the package].[Class Name] [arguments]
Допустим, ваш класс называется CommandLine.class
, и код выглядит следующим образом:
package com.tutorialspoint.java;
/**
* Created by mda21185 on 15-6-2016.
*/
public class CommandLine {
public static void main(String args[]){
for(int i=0; i<args.length; i++){
System.out.println("args[" + i + "]: " + args[i]);
}
}
}
Затем вы должны cd
в папку src и команда, которую вам нужно запустить, будет выглядеть так:
java com.tutorialspoint.java.CommandLine this is a command line 200 -100
И вывод в командной строке будет:
args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100
javac -classpath . HelloWorld.java
сработало бы! И это лучшее решение в вашем случае.
– Stephen C
22 August 2015 в 10:15
java
не смотрел $ CLASSPATH (потому что вы использовали -classpath или -jar) или 2) параметр classpath не был установлен в среде, которая не была в эффект i> в контексте выполнения java
; например потому что вы не "источник" файл, в который добавлены команды setenv в правой оболочке.
– Stephen C
15 March 2016 в 14:14
Main
не находится в файле JAR. -cp lib.jar;
означает то же, что и -cp lib.jar;.
, то есть текущий каталог включен в путь к классам.
– Stephen C
22 September 2016 в 07:58
-cp .
не требуется, потому что если $CLASSPATH
не задано, то .
- это путь по умолчанию.
– Stephen C
7 March 2017 в 04:37
echo %CLASSPATH%
?) И нет, я не могу проверить, потому что у меня нет ПК с ОС Windows.
– Stephen C
5 May 2017 в 07:24
-classpath
и -cp
не используются, а CLASSPATH
не задано, то путь к пользовательскому классу состоит из текущего каталога (.
). & quot; i> Ссылка - docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html
– Stephen C
5 May 2017 в 07:27
cd
в src
, а затем запустить команду java ../bin com.blah.blah.MyClass
, которая работала для меня. Так что спасибо за подсказку!
– tamj0rd2
21 July 2017 в 12:28
main
из среды IDE. (И для некоторых IDE вам не нужно i> настроить панель запуска, чтобы это произошло, например, run
Eclipse будет найти i> класс с методом main
для вы.
– Stephen C
22 August 2017 в 04:52
Could not find or load main class ...
. Вот как я приехал на этот пост :)
– cepix
22 August 2017 в 17:41
main
, вам просто не предлагается опция «Использовать и использовать Java» в контекстном меню.
– Stephen C
22 August 2017 в 22:44