Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在另一台主机上部署jar时没有音频/图像_Java_Image_Audio_Jar - Fatal编程技术网

Java 在另一台主机上部署jar时没有音频/图像

Java 在另一台主机上部署jar时没有音频/图像,java,image,audio,jar,Java,Image,Audio,Jar,下面的Java代码(存储在Jar文件中)在我的计算机上工作,但当我将其部署到另一台计算机上时,我只看到文本,而看不到音频或图像 有什么想法吗 import java.awt.Color; import java.awt.Font; import java.util.*; import java.io.File; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.swing.*

下面的Java代码(存储在Jar文件中)在我的计算机上工作,但当我将其部署到另一台计算机上时,我只看到文本,而看不到音频或图像

有什么想法吗

import java.awt.Color;
import java.awt.Font;
import java.util.*;
import java.io.File;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.*;
import javax.swing.plaf.ColorUIResource;


public class SlotMachines
{
    public static void main (String[] args)
    {

        UIManager.put("OptionPane.background",new ColorUIResource(250,175,0));
        UIManager.put("Panel.background",new ColorUIResource(0,0,0));
        String ask;
        JLabel lbl = new JLabel("Input your cash?");
        lbl.setFont(new Font("Georgia", Font.BOLD, 16));
        lbl.setForeground(Color.WHITE);
        ask = JOptionPane.showInputDialog(null, lbl);
            double money = Double.parseDouble(ask);
        int again;
        int rerun = 1;
        Random generate = new Random();
        while (rerun == 1) //rerun while loop
        {
            JLabel pnl = new JLabel("Would you like to play Slots?");
            pnl.setFont(new Font("Georgia", Font.BOLD, 16));
            pnl.setForeground(Color.WHITE);    
            again = JOptionPane.showConfirmDialog (null, pnl);

            int bet = 2;

            if (again == JOptionPane.NO_OPTION)
            {
            JLabel lab = new JLabel("Your cash stays at: " + money);
            lab.setFont(new Font("Georgia", Font.BOLD, 16));
            lab.setForeground(Color.WHITE);
            JOptionPane.showMessageDialog (null, lab);
            }

            while (again == JOptionPane.YES_OPTION)
            {
                File Winner = new File("jackpot.au");
                File Mega = new File("mega.au");
                File lose = new File("lose.au");
                if (money >= 2)
                {
                    money -= bet;
                    int[] arr = new int[3];
                    for (int i = 0; i < arr.length; i++)
                    {
                        ImageIcon icon = new ImageIcon("slotmachine.jpg");
                        arr[i] = generate.nextInt(10);              
                        JLabel label = new JLabel("[" + arr[i] + "] ");
                        label.setFont(new Font("Impact", Font.BOLD, 125));
                        label.setForeground(Color.ORANGE);
                        JOptionPane.showMessageDialog (null, label, " ", JOptionPane.INFORMATION_MESSAGE, icon);

                    }
                    if (arr[0] == arr[1] && arr[1] == arr[2])
                    {

                        JLabel win = new JLabel("JACKPOT!!! BET X 5!");
                        win.setForeground(Color.CYAN);
                        PlaySound(Mega);
                        win.setFont(new Font("Arial", Font.BOLD, 140));
                        JOptionPane.showMessageDialog (null, win);
                        money += bet*5;
                    }
                    else
                    {
                        if (arr[0] == arr[1] || arr[0] == arr[2] || arr[1] == arr[2])
                    {
                            JLabel small = new JLabel("Rolling In cash! Doubles!");
                            small.setForeground(Color.magenta);
                            PlaySound(Winner);
                            small.setFont(new Font("Arial", Font.BOLD, 20));
                            JOptionPane.showMessageDialog (null, small);
                            money += bet*2;
                    }
                    }

                    JLabel cash = new JLabel("Your cash: $" + (int)money);
                    cash.setForeground(Color.GREEN);
                    cash.setFont(new Font("Georgia", Font.BOLD, 18));
                    JOptionPane.showMessageDialog (null, cash);

                    if (money >= 2)
                    {
                        JLabel big = new JLabel("Would you like to spin again?");
                        big.setForeground(Color.WHITE);
                        big.setFont(new Font("Georgia", Font.BOLD, 16));
                        again = JOptionPane.showConfirmDialog (null, big);

                        if (again != JOptionPane.YES_OPTION)
                    {
                            JLabel hell = new JLabel("You came out of hell with: $" + (int)money);
                            hell.setForeground(Color.RED);
                            hell.setFont(new Font("Georgia", Font.BOLD, 18));
                            JOptionPane.showMessageDialog (null, hell);
                            rerun = 0;
                    }
                    }

                    }
                    else
                    {
                        JLabel sorry = new JLabel("Sorry you can't afford to spin, your card is at: $" + money);
                        sorry.setForeground(Color.WHITE);
                        sorry.setFont(new Font("Georgia", Font.BOLD, 16));
                        PlaySound(lose);
                        JOptionPane.showMessageDialog (null, sorry);
                        again = JOptionPane.NO_OPTION;
                    }

            }
            rerun = 0;
        }
    }
    static void PlaySound(File Sound)
    {
        try{
            Clip clip = AudioSystem.getClip();
            clip.open(AudioSystem.getAudioInputStream(Sound));
            clip.start();

        }catch(Exception e)
        {

        }
    }
}
导入java.awt.Color;
导入java.awt.Font;
导入java.util.*;
导入java.io.File;
导入javax.sound.sampled.AudioSystem;
导入javax.sound.sampled.Clip;
导入javax.swing.*;
导入javax.swing.plaf.ColorUIResource;
公共级减速器
{
公共静态void main(字符串[]args)
{
UIManager.put(“OptionPane.background”,新的ColorUIResource(250175,0));
UIManager.put(“Panel.background”,新的ColorUIResource(0,0,0));
串问;
JLabel lbl=新的JLabel(“输入您的现金?”);
lbl.setFont(新字体(“Georgia”,Font.BOLD,16));
lbl.设置前景(颜色:白色);
ask=JOptionPane.showInputDialog(null,lbl);
双倍的钱=双倍的;
再次int;
重新运行int=1;
随机生成=新随机();
while(rerun==1)//在循环期间重新运行
{
JLabel pnl=新的JLabel(“您想玩老虎机吗?”);
pnl.setFont(新字体(“Georgia”,Font.BOLD,16));
pnl.设置前景(颜色:白色);
再次=JOptionPane.showConfirmDialog(null,pnl);
int-bet=2;
if(再次==JOptionPane.NO_选项)
{
JLabel lab=新JLabel(“您的现金停留在:“+货币”);
lab.setFont(新字体(“Georgia”,Font.BOLD,16));
实验室设置前景(颜色:白色);
JOptionPane.showMessageDialog(null,lab);
}
while(同样==JOptionPane.YES\u选项)
{
文件赢家=新文件(“jackpot.au”);
File Mega=新文件(“Mega.au”);
文件丢失=新文件(“lose.au”);
如果(货币>=2)
{
金钱=赌注;
int[]arr=新的int[3];
对于(int i=0;i=2)
{
JLabel big=新JLabel(“您想再旋转一次吗?”);
大。设置前景(颜色。白色);
big.setFont(新字体(“Georgia”,Font.BOLD,16));
再次=JOptionPane.showConfirmDialog(null,大);
if(再次!=JOptionPane.YES\u选项)
{
JLabel hell=new JLabel(“你带着:$”+(int)钱走出地狱);
地狱。设置前景(颜色。红色);
setFont(新字体(“Georgia”,Font.BOLD,18));
JOptionPane.showMessageDialog(null,地狱);
重新运行=0;
}
}
}
其他的
{
JLabel sorry=new JLabel(“对不起,你买不起旋转,你的卡是:$”+钱);
对不起,设置前景(颜色.白色);
对不起,setFont(新字体(“Georgia”,Font.BOLD,16));
播放声音(丢失);
JOptionPane.showMessageDialog(空,抱歉);
再次=JOptionPane.NO_选项;
}
}
重新运行=0;
}
}
静态无效播放声音(文件声音)
{
试一试{
Clip Clip=AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(声音));
clip.start();
}捕获(例外e)
{
}
}
}
两个可能的原因:

  • 您忘了将资产带到另一台计算机

  • 您将资产打包到JAR中,但应该使用
    ClassLoader.getResource()
    来检索它们,因为它们位于类路径上而不在工作目录中。大概是这样的:

    public static void playSound(String pathToMusicOnClasspath) {
        try {
            Clip clip = AudioSystem.getClip();
            clip.open(AudioSystem.getAudioInputStream(ClassLoader.getSystemResource(pathToMusicOnClasspath)));
            clip.start();
        } catch(Exception ignore) {}
    }
    
    playSound("jackpot.au");
    
    可以这样称呼:

    public static void playSound(String pathToMusicOnClasspath) {
        try {
            Clip clip = AudioSystem.getClip();
            clip.open(AudioSystem.getAudioInputStream(ClassLoader.getSystemResource(pathToMusicOnClasspath)));
            clip.start();
        } catch(Exception ignore) {}
    }
    
    playSound("jackpot.au");
    
    这也应该对您的
    图像图标执行

    ImageIcon icon = new ImageIcon(ClassLoader.getSystemResource("slotmachine.jpg"));
    

  • 你能再具体一点吗。我对java是新手,我不知道