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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование Property из архива после запуска jar 
V
    Опции темы
jhane
Дата 8.5.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 13.8.2006
Где: Иерусалим

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



Спасибо. Это прошло, осталось поднять звуковой файл. Не знаете как?
PM MAIL ICQ   Вверх
powerOn
Дата 8.5.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(jhane @  8.5.2007,  17:46 Найти цитируемый пост)
осталось поднять звуковой файл. Не знаете как? 


Объясните пожалуйста подробнее, что за файл, где лежит и что вы хотите с ним сделать.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
jhane
Дата 8.5.2007, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 13.8.2006
Где: Иерусалим

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



Код

public class SunAudioClip implements java.applet.AudioClip {
. . . 

private AudioData audiodata;
. . .
public SunAudioClip (URL url) throws java.io.IOException {
        audiodata = new AudioStream (url.openStream()).getData();
       
        audiostream = null;
        continuousaudiostream = null;
    }


Проблемма таже. Так работает, а из архива не подгружается. Вылетает на 
Код

audiodata = new AudioStream (url.openStream()).getData();



Лежит там же где и все ресурсы.

Добавлено через 4 минуты и 34 секунды
Цитата(powerOn @  8.5.2007,  16:38 Найти цитируемый пост)
Если данные должны меняться и при этом сохраняться между запусками программы, то следует использовать внешние файлы.


т.е. если при каждом закрытии программы я изменяю property то не стоит его ложить в архив?
Например, я сохраняю результат игры, не ложить же его отдельно в файл с названием "измените меня". 
 
PM MAIL ICQ   Вверх
powerOn
Дата 8.5.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(jhane @  8.5.2007,  18:49 Найти цитируемый пост)
Проблемма таже. Так работает, а из архива не подгружается. Вылетает на 


структура jar-a:
user posted image

код класса Main:

Код

package audiotest;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

public class Main
{
    public Main()
    {
    }
    
    public static void main(String[] args)
    {
        try
        {
            AudioInputStream ais = AudioSystem.getAudioInputStream(
                    ClassLoader.getSystemResourceAsStream("resources/sndAuth.wav"));
            Clip clip = AudioSystem.getClip();
            clip.open(ais);
            clip.start();
            Thread.sleep(5000);
            clip.close();
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
}


jar прикрепляю.

Цитата(jhane @  8.5.2007,  18:49 Найти цитируемый пост)
т.е. если при каждом закрытии программы я изменяю property то не стоит его ложить в архив?

Совершенно верно.

Цитата(jhane @  8.5.2007,  18:49 Найти цитируемый пост)
Например, я сохраняю результат игры, не ложить же его отдельно в файл с названием "измените меня". 


Если вы не хотите что бы пользователь имел возможность редактировать или просто видеть что находится в файле, то зашифруйте его.

Добавлено через 49 секунд
jar

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  AudioTest.jar 20,12 Kb


--------------------
user posted image нет времени думать - нужно писать КОД!

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 13.8.2006
Где: Иерусалим

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



Все хорошо, но мне нужно оформить это в виде класса. Написала:
Код

package Game;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

public class MyPlayer implements java.applet.AudioClip{
    public MyPlayer(String resource){
        try
         {
            ais = AudioSystem.getAudioInputStream(
                ClassLoader.getSystemResourceAsStream(resource));
            clip = AudioSystem.getClip();
            clip.open(ais);
         }
         catch (Exception ex)
         {
             ex.printStackTrace();
         }        
    }
    public void play (){
    try
     {
         clip.start();
         Thread.sleep(50000);
     }
     catch (Exception ex)
     {
         ex.printStackTrace();
     }
    }
    
    public void loop () {
        try
         {
        clip.loop(100);
        Thread.sleep(50000);
         }
         catch (Exception ex)
         {
             ex.printStackTrace();
         }
    }
    public void stop() {
     try
         {
      // Thread.sleep(50000);
       clip.stop();
         }
         catch (Exception ex)
         {
             ex.printStackTrace();
         }
    }
    
    private AudioInputStream ais;
    private Clip clip;
    public static void main(String args[]){
        MyPlayer pl = new MyPlayer("ia0.wav");
        System.out.print("na4ali");
        //pl.run();
    //    pl.play();
    //    p1.loop(12);
        
    }
}



2 проблеммы:
1. Длина потока. Мне нужно крутить клип по кругу, пока не будет закрыт фрейм или пока пользователь не выключит.
2. По какой-то причине вызов loop и stop не компилируется. Т.е. p1.loop не проодит компиляцию.

Если делать implements javax.sound.sampled.Clip, там до ежиков переопределять и я не совсем знаю как. 
PM MAIL ICQ   Вверх
jhane
Дата 12.5.2007, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 13.8.2006
Где: Иерусалим

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



С потоком можно обойтись 
Код

 while (true) {
          Thread.yield();
         }


но помоему это не очень красиво
PM MAIL ICQ   Вверх
powerOn
Дата 12.5.2007, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



По поводу повторения клипа тут было решение.



--------------------
user posted image нет времени думать - нужно писать КОД!

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 13.8.2006
Где: Иерусалим

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



спасибо. Докопалась. В своем коде вместо 
Код

FileInputStream fis = new FileInputStream (filename);
        AudioStream audioStream = new AudioStream (fis);
        audiodata = audioStream.getData();

написала 
Код

URL _url = this.getClass().getClassLoader().getResource(filename);
        audiodata = new AudioStream (_url.openStream()).getData();


и заработало.

тему пока не закрываю, пока есть еще участки, которые не поднимаюся.
PM MAIL ICQ   Вверх
jhane
Дата 12.5.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 13.8.2006
Где: Иерусалим

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



На что меняется 
Код

gameBackgroundPanel.setImageFile(new java.io.File(LanguageElements.languageProperties.getProperty("map")));

?
В this.getClass().getClassLoader() не увидела ничего подходящего. (нужно заменить new java.io.File)
PM MAIL ICQ   Вверх
powerOn
Дата 12.5.2007, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(jhane @  12.5.2007,  16:32 Найти цитируемый пост)
gameBackgroundPanel

Какого класса этот объект?


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
jhane
Дата 12.5.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 13.8.2006
Где: Иерусалим

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



Цитата(powerOn @  12.5.2007,  20:09 Найти цитируемый пост)
gameBackgroundPanelКакого класса этот объект?

Код

public class PicturePanel extends javax.swing.JPanel{
.....

public void setImageFile(File imageFile) {
        try {
            if (imageFile == null) {
                originalImage = null;
            }
            BufferedImage bi = ImageIO.read(imageFile);
            originalImage = bi;
            this.image = bi;
        } catch (IOException ex) {
            System.err.println("File does not exist!");
            ex.printStackTrace();
        }
        repaint();
    }
}

Не в этом суть. Как подгружается обычный файл. Это не единственное место, где необходимо делать new File.

 smile  даже не предполагала, что для того что-бы собрать проект в архив, прийдется его почти весь переписывать  smile  

PM MAIL ICQ   Вверх
powerOn
Дата 12.5.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Перепишите метод setImageFile так, чтобы он вместо File использовал InputStream.



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
jhane
Дата 18.5.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 13.8.2006
Где: Иерусалим

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



Спасибо. Сработало.

Теперь он не находит внешнюю библиотеку:  java.lang.NoClassDefFoundError: javax/mail/Address

Это часто встречаемая ошибка, ее причина: или дважды обьявлена библиотека, или не подключено activation.jar

Путь у меня прописан правильно, из CLASSPATH системы я эти библиотеки удалила (они прописаны только в CLASSPATH проекта).

Может проблемма в том что jar игнорирует файл с CLASSPATH проекта?  Пробывала прописать в ручную" java -jar Game.jar mail.jar activation.jar" не помогает. Пробывала засунуть библиотеки в сам jar тот же результат.

Это сообщение отредактировал(а) jhane - 18.5.2007, 18:27
PM MAIL ICQ   Вверх
powerOn
Дата 18.5.2007, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(jhane @  18.5.2007,  19:19 Найти цитируемый пост)
Пробывала прописать в ручную" java -jar Game.jar mail.jar activation.jar" не помогает.

Начнём с того, что вы неправильно прописываете classpath. Для этого нужно использовать опцию -cp. Но не в этом суть, все равно работать не будет, поскольку используется опция -jar. 
Для jar-файлов classpath прописывается внутри его манифеста. Вот хорошая статья на эту тему.

P.S.: И еще, давай-те так: один вопрос - один топик.


--------------------
user posted image нет времени думать - нужно писать КОД!

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

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

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


 




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


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

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