Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с запуском из пакета, Работает вне пакета, а в пакете фиг! 
V
    Опции темы
BlHol
Дата 14.9.2007, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 26.11.2005

Репутация: нет
Всего: нет



День добрый!
Есть 3 файла.
1. FormattedInput.java
Его начало:
Код

package StreamWork.Input;

import java.io.*;

public class FormattedInput
{...}


2.FormatWriter.java
Его начало:
Код

package StreamWork.Output;

import java.io.*;

public class FormatWriter extends PrintWriter
{...}



3.PrimesFile.java
Его начало:
Код

import StreamWork.Input.*;
import StreamWork.Output.*;
import java.io.*;

public class PrimesFile
{...}


Первые два распихиваю по каталогам: первый - в f:\packages\StreamWork\Input, второй - в
f:\packages\StreamWork\Output, согласно пакетам.

Все это прекрасно компиляется и работает до тех пор, пока я не добавляю в 3-й файл (PrimesFile.java):
Код

package StreamWork.PrimesFile;

и не отправляю его в соответствующий пакет.
После этого компиляется все нормально, а вот при запуске выдает:

Код

Exception in thread "main" java.lang.NoClassDefFoundError: PrimesFile (wrong na
e: StreamWork/PrimesFile/PrimesFile)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        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)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)


Причем я его запускал и так:
F:\packages\StreamWork\PrimesFile>java -cp .;\f:\packages\StreamWork PrimesFile
и так
F:\packages>java -cp .;\f:\packages\StreamWork PrimesFile
И еще несколько вариантов. Результат один.
Что здесь не так?
Заранее спасибо.
С уважением.


PM MAIL   Вверх
y3u
Дата 14.9.2007, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 9.9.2006
Где: Москва

Репутация: 5
Всего: 13



http://java.sun.com/docs/books/jls/third_e.../names.html#6.8

хоть там и неписано 
Цитата
com.JavaSoft.jag.Oak
 в кемелкейзе пэкэджи именовать не принято.

http://java.sun.com/docs/books/tutorial/ge...rted/index.html

Это сообщение отредактировал(а) y3u - 14.9.2007, 11:19


--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
BlHol
Дата 14.9.2007, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 26.11.2005

Репутация: нет
Всего: нет



Дико извиняюсь, с английским не все так хорошо как хотелось бы. Что-то не так с именами пакетов?
PM MAIL   Вверх
AlexeyVorotnikov
Дата 14.9.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Попробуй вот так:
F:\packages>java -cp . StreamWork.PrimesFile.PrimesFile

Добавлено через 1 минуту и 19 секунд
Цитата(BlHol @  14.9.2007,  12:16 Найти цитируемый пост)
Дико извиняюсь, с английским не все так хорошо как хотелось бы.

А вот английский надо подтянуть. Без него в программировании совсем никак.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
BlHol
Дата 14.9.2007, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 26.11.2005

Репутация: нет
Всего: нет



Цитата(AlexeyVorotnikov @ 14.9.2007,  11:31)
Попробуй вот так:
F:\packages>java -cp . StreamWork.PrimesFile.PrimesFile


Попробовал. Результат:

Код

F:\packages>java -cp . StreamWork.PrimesFile.PrimesFile
Exception in thread "main" java.lang.NoClassDefFoundError: StreamWork/PrimesFile/PrimesFile


Добавлено через 12 минут и 31 секунду
Хотя нет... Прокатило smile  smile  smile 
Просто перед этим пакет по другому назвал.
Спасибо.
Остался один вопрос:
Чем 
Код

F:\packages>java -cp .;.\StreamWork\PrimesFile PrimesFile

отличается от 
Код

F:\packages>java -cp . StreamWork.PrimesFile.PrimesFile

в плане запуска приложения?

Заранее спасибо.
PM MAIL   Вверх
AlexeyVorotnikov
Дата 14.9.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Проверь, дествительно ли файл PrimesFile.class лежит в F:\packages\StreamWork\PrimesFile

Добавлено через 1 минуту и 37 секунд
В плане запуска приложения, надо указывать полное имя класса со всеми пакетами.

Добавлено через 2 минуты и 42 секунды
А параметр -cp должен указывать корневой каталог классов.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
BlHol
Дата 14.9.2007, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 26.11.2005

Репутация: нет
Всего: нет



Да, он действительно там.
И потом, я же указывал полный путь, только так  f:\packages\StreamWork\PrimesFile.Почему же тогда через "." начиная от  StreamWork путь воспринимается, а традиционно, через слэш отказывается?
И если я помню, то после -cp нужно указывать через ";" все пути, где находятся пакеты

Это сообщение отредактировал(а) BlHol - 14.9.2007, 12:18
PM MAIL   Вверх
AlexeyVorotnikov
Дата 14.9.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Почему? Патамушта! smile
Потому, что так написано в документации, ссылки на которую приведены выше.
А вот ссылка конкретно как запускать java: Java application launcher


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
BlHol
Дата 14.9.2007, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 26.11.2005

Репутация: нет
Всего: нет



Странно, однако... Или это синтаксис запуска класса, который упакован в пакет? Так?
Просто если класс не в пакете, то после -cp (в книжке написано) указываются все пути до пакетов(импортированных в это класс) и до самого файла. 
Т.е., как резюме, разница в синтаксисе объясняется тем, что в одном случае класс не в пакете, а в другом в пакете? Так?
PM MAIL   Вверх
AlexeyVorotnikov
Дата 14.9.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Да


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
BlHol
Дата 14.9.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 26.11.2005

Репутация: нет
Всего: нет



Спасибо за помощь.
PM MAIL   Вверх
AlexeyVorotnikov
Дата 14.9.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Не за что.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.