2012-02-11 9 views
0

Извините, я не мог быть более конкретным с самим вопросом. Вот что я запускаю: Windows 7 64bit, JDK v7, JRE v7 (64 бит) и JRE v6 (32 бит). Я довольно новичок, когда дело доходит до Java, однако я знаю, как скомпилировать программу и все такое. Я постоянно получаю сообщение об ошибке, когда я попытался запустить мои скомпилированные программы:Проблемы с компиляцией программ Java

C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1>javac ch3p1.java 

C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1>java ch3p1 
Error: could not open `C:\Program Files (x86)\Java\jre6\lib\i386\jvm.c 

C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1>java -cp ch3p1 
Error: could not open `C:\Program Files (x86)\Java\jre6\lib\i386\jvm.c 

C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1>java cd3p1 
Exception in thread "main" java.lang.NoClassDefFoundError: cd3p1 
Caused by: java.lang.ClassNotFoundException: cd3p1 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     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) 
Could not find the main class: cd3p1. Program will exit. 

C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1>java -version 
java version "1.6.0_29" 
Java(TM) SE Runtime Environment (build 1.6.0_29-b11) 
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing) 

к сведению, что не может найти файл, потому что я изменил название папки, чтобы увидеть, если он будет автоматически обнаружит 64 битную JRE у меня есть установленный

Однако после достаточного поиска я нашел страницу, в которой указывались мои проблемы, потому что я запускал программу, которую я скомпилировал на JDK v7 в JREv6. Я немного перепутал это с этим, пытаясь заставить его работать в JRE, который пришел с моей загрузкой JDK.

CD: C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1 
Current directory: C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1 
javac ch3p1.java 
Process started >>> 
<<< Process finished. 
C:\Program Files\Java\jre7\bin\java.exe ch3p1 
Process started >>> 
Error: Could not find or load main class ch3p1 
<<< Process finished. 

Я использую Notepad ++ и NppExec для компиляции быстрее, и я отказался от попыток его запустить JRE v7 и просто использовал расположение этого. А вот мой NppExec код (я не знаю, если это важно, но я отправлю его в любом случае):

cd $(CURRENT_DIRECTORY) 

javac $(FILE_NAME) 

C:\Program Files\Java\jre7\bin\java.exe $(NAME_PART) 

И, наконец, вот текущая программа, которую я пытаюсь запустить:

public class ch3p1 
{ 
    public static void main(String args[]) 
    { 
     System.out.print("Hello."); 
    } 
} 

Итак, краткое описание. Первая ошибка, о которой я узнал, заключалась в том, что я собирал и запускал программу с различными версиями JDK и JRE. Я не мог понять, как на самом деле заставить его работать с JRE, который пришел с моей установкой JDK, поэтому я использовал прямой путь к нему. Мои надежды раздробились, что это сработает, когда я пойду запустить свою скомпилированную программу. Я получил простую «Ошибка: не смог найти или загрузить основной класс ch3p1».

В чем вопрос? Я не знаю точно, широкий вопрос: что мне нужно сделать, чтобы заставить это работать? Я не могу быть более наглядным, чем это, потому что я понятия не имею, что делать или где искать дальше. Я надеюсь, что я предоставил достаточно полезную информацию и структурировал ее достаточно хорошо, чтобы сделать ее понятной.

Другие вопросы: Будет ли удаление двух обновлений Java 6 в моей программе «Установка и удаление программ»? Как изменить его, чтобы всякий раз, когда он запускает java, он запускает 64-битную JRE v7?

Я понятия не имею, что я здесь делаю, и я в основном учился, когда я ухожу. Я знаком с компьютерами, но я новичок в Java и JDK, поэтому я мало знаю о том, как это работает. Мое руководство может быть полностью неверно и неправильно, если так, пожалуйста, исправьте меня.

EDIT

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

Я буду перечислять ответы и то, что я пытался здесь:

  • Я переустановил JDK и JRE с сайта Oracle

  • Я поставил свою системную переменную SET_HOME и моя системная переменная Path в нем есть каталог JDK bin.

  • Мой .class файл и мой .java-файл находятся в одном каталоге, а мой класс и .java-файл названы одинаковыми, включая точные.

  • После установки JDK и JRE я удалил свои предыдущие файлы и сделал новый, и это тоже не сработало.

  • Я попытался разместить прямые адреса java и javac, как это было предложено в ответе.

  • Я понимаю, что там есть лучшие IDE и программы для сборки, я использую javac, потому что класс, в котором я сейчас находится, использует javac.

Теперь, для некоторых дополнительных вопросов, чтобы помочь мне:

  • У меня есть Java-v6.xx обновления в моем добавить/удалить программы список, будет извлекать их в любом случае эффект ничего в положительный или отрицательный. И завершит ли удаление всех файлов JDK/JRE и переустановку что-нибудь изменит?

  • Есть ли какие-либо известные проблемы с использованием Java и Windows 7, с которыми я мог столкнуться.

  • Это проблема с JRE или JDK, потому что она, кажется, компилируется без каких-либо проблем, но когда я иду запускать, это когда я получаю ошибки.

  • Существуют ли другие переменные, кроме CLASS_PATH или Path, которые мне нужно установить?

Я ценю любую помощь, которая была предоставлена ​​до сих пор, хотя я еще не нашел решение.

+0

Ознакомьтесь с Явой чтения и делать некоторые учебники. Как этот http://docs.oracle.com/javase/tutorial/getStarted/cupojava/win32.html –

+0

Остановите написание javac и научитесь использовать ant, или maven, или какой-либо другой инструмент реальной сборки. – bmargulies

+2

@bmargulies Я думаю, что начинающие должны начинаться как можно проще. Изучение Maven перед запуском программы, вероятно, слишком много и слишком запутанно. – Optimist

ответ

2

Попробуйте использовать абсолютный путь к каталогу, в котором вы установили java. Вот то, что я напечатал бы на моей машине

cd "C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1" 

"C:\Program Files\Java\jdk1.7.0_02\bin\javac" ch3p1.java 

"C:\Program Files\Java\jdk1.7.0_02\bin\java" ch3p1 

, если это работает, то вы должны добавить каталог в путь, так что это Предпочитаемый версия Java. Таким образом, вам не придется больше использовать абсолютный путь и просто введите «Java» и «JAVAC», как обычно

set PATH="C:\Program Files\Java\jdk1.7.0_02\bin\";%PATH% 

Установка пути также может быть сделано где-то в панели управления, так что вы не нужно набирать это при каждом открытии командной строки

Редактировать: Возможно, вы должны установить JAVA_HOME, а также предложить «duffymo». Если он все еще не работает, может быть что-то не так с вашей установкой java.Попробуйте загрузить и установить новую версию от Oracle

+0

Второй 'javac' должен быть' java', я полагаю? – madth3

+0

@ madth3 да, я исправил пример сейчас :-) – Optimist

+0

Должен ли я использовать C: \ Program Files \ Java \ jre7 \ bin \ java? Или нет никакой разницы между ними. Как установить JAVA_HOME? Я видел это в примере где-то, но я не вижу его в системных переменных, и я решил, что он уже установлен где-то, но не мешало бы проверять. Я не так разбираюсь в консольных командах, поэтому не хочу ничего путать. Я осмотрю его и отредактирую, если найду что-нибудь. Я уверен, что так и сделаю. – Snhr

1

Начнем с того, что вы никогда не должны ставить какой-либо код в каталогах, где вы установили Java JDK. Создайте отдельную папку (например, «c: \ work») и поместите туда свои подпапки.

Откройте командную оболочку и введите следующее: java -version. Это скажет вам версию Java, которую вы компилируете и выполняете. Вы заботитесь о JDK, потому что вы разрабатываете код.

Является ли ваша переменная среды JAVA_HOME установленной? Укажите его в каталог, в котором установлена ​​Java. Затем добавьте %JAVA_HOME%\bin в свою ПУТЬ. Если вы все это сделаете правильно, вы должны скомпилировать командную оболочку, набрав javac.

Итак, создайте папку c:\work\learning\src и положите в нее свою папку ch3p1.java. Create a directory c:\work\learning\classes, тоже. Скомпилируйте код с помощью этой команды:

javac -cp .;classes -d classes src\*.java 

Вы должны увидеть ch3p1.class в папке классов.

Выполнить это с помощью следующей команды:

java -cp .;classes ch3p1 

Вы увидите "Привет." в консоли.

EDIT: Я рекомендую вам внимательно прочитать этот учебник:

http://docs.oracle.com/javase/tutorial/getStarted/cupojava/win32.html

Вы не первый человек, чтобы скомпилировать и запустить «привет мир». Мне кажется, что ты слишком сильно обмахиваешься. Упрощать.

+0

Из его примеров кажется, что он сделал правильные вещи и не поместил код в каталог установки java, но в отдельный каталог (C: \ Users \ Sean \ Documents) – Optimist

-1

Несколько вещей здесь.

Компилятор Java может принимать аргумент «цель», чтобы указать, для какой версии Java вы хотите скомпилировать. По умолчанию целью является версия текущей JVM.

До сих пор любой класс, скомпилированный с заданной целью, был совместим с этой целью и любой из вышеперечисленных версий. Таким образом, класс, скомпилированный для Java 5, совместим с Java 5, 6 и 7.

Чтобы узнать, какая версия Java, на которой вы работаете, введите java -version в свой терминал. Он выведет что-то вроде «Java 1.X ...». «X» - это версия Java, и вы часто будете видеть, что люди говорят о Java 5 или Java 1.5, что то же самое (то же самое касается 6 и 7).

Выполняемая версия зависит от нескольких параметров, но обычно все это сводится к первому каталогу bin в вашей переменной среды PATH.

Теперь, если вы рассматриваете Java IDE, есть 3 основные из них:

  • Затмение
  • NetBeans
  • IntelliJ

Все три хороши Java IDE, и это довольно много религиозных, которые вы предпочтете. Лично я использую Eclipse.

Наконец, для вас проблем:

  1. Comiple с использованием javac ch3p1.java
  2. Запуска с использованием java -cp . ch3p1
+0

Я бы не рекомендовал IDE для тех, кто только начал с Java. Перед IDE вы просто не знаете Java; когда вы добавляете один из них в микс, у вас есть две проблемы. По крайней мере, ознакомьтесь с процессом компиляции и запуска простых программ в командной оболочке и текстовом редакторе. Вы поймете CLASSPATH и оцените, что делает IDE для вас. И если бы я это сделал, я бы выбрал IntelliJ над Eclipse или NetBeans. – duffymo

+0

Действительно, это хорошая привычка знать основы, прежде чем прыгать на IDE. Но поскольку он говорил о инструментах, я думал, что дам ему намек на то, что существует. Что касается выбора, как я сказал, это религиозный, так что давайте просто дать ему выбор, а не требовать лучшего. –

+0

На самом деле я набрал -версию в одном из моих примеров, я компилирую JDK v7 и запускаю его с помощью JVM v6.xx. Это не проблема с компиляцией с более старой версией, чем моя среда выполнения, это проблема с компиляцией более новой версии, чем моя среда выполнения.И мне не нравится использовать IDE для большинства вещей. Я просто использую Notepad ++. – Snhr

Смежные вопросы