Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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文件时SwingWorker不工作_Java_Swing_Jar_Noclassdeffounderror_Swingworker - Fatal编程技术网

Java 创建jar文件时SwingWorker不工作

Java 创建jar文件时SwingWorker不工作,java,swing,jar,noclassdeffounderror,swingworker,Java,Swing,Jar,Noclassdeffounderror,Swingworker,我有以下代码: import javax.swing.*; import java.awt.event.*; import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.Executors; public class KaraokeMachine extends JFrame implements ActionListener { ClassLoader Idr = this.g

我有以下代码:

import javax.swing.*;
import java.awt.event.*;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
public class KaraokeMachine extends JFrame implements ActionListener
{
ClassLoader Idr = this.getClass().getClassLoader();
java.applet.AudioClip everythingIsAwesome = JApplet.newAudioClip( Idr.getResource( "everything is awesome.wav" ) );
JLabel lbl1 = new JLabel( "" );
JButton btn = new JButton( "Play" );
JPanel pnl = new JPanel();
final Executor executor = Executors.newCachedThreadPool();

public KaraokeMachine()
{
    super( "Karaoke" );
    setSize( 520, 280 );
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    pnl.add( lbl1 );
    pnl.add( btn );
    btn.addActionListener( this );
    add( pnl ); setVisible( true );
}

public void actionPerformed( ActionEvent event )
{
    if ( event.getSource() == btn )
    {
            SwingWorker<Void, String> worker = new SwingWorker<Void, String>()
            {
                @Override
                protected Void doInBackground() throws Exception
                {
                    everythingIsAwesome.play();
                    this.publish("Everything");
                    Thread.sleep( 600 );
                    this.publish("Everything is");
                    Thread.sleep( 400 );
                    this.publish("Everything is Awesome!");
                    Thread.sleep( 2000 );
                    this.publish("Everything");
                    Thread.sleep( 600 );
                    this.publish("Everything is");
                    Thread.sleep( 400 );
                    this.publish("Everything is cool");
                    Thread.sleep( 400 );
                    this.publish("Everything is cool when");
                    Thread.sleep( 400 );
                    this.publish("Everything is cool when you're");
                    Thread.sleep( 400 );
                    this.publish("Everything is cool when you're part");
                    Thread.sleep( 150 );
                    this.publish("Everything is cool when you're part of");
                    Thread.sleep( 150 );
                    this.publish("Everything is cool when you're part of a");
                    Thread.sleep( 150 );
                    this.publish("Everything is cool when you're part of a team");
                    Thread.sleep( 1000 );
                    this.publish("Everything");
                    Thread.sleep( 600 );
                    this.publish("Everything is");
                    Thread.sleep( 400 );
                    this.publish("Everything is Awesome!");
                    Thread.sleep( 1500 );
                    this.publish("When");
                    Thread.sleep( 300 );
                    this.publish("When you're");
                    Thread.sleep( 300 );
                    this.publish("When you're livin'");
                    Thread.sleep( 300 );
                    this.publish("When you're livin' in");
                    Thread.sleep( 300 );
                    this.publish("When you're livin' in a");
                    Thread.sleep( 300 );
                    this.publish("When you're livin' in a dream!");
                    Thread.sleep( 300 );
                    return null;
                }
            @Override
            protected void process( List<String> res )
            {
                for(String text : res)
                {
                    lbl1.setText(text); 
                }
                }
        };
        executor.execute(worker);
    }
}
public static void main( String[] args )
{
    KaraokeMachine karaoke = new KaraokeMachine();
}
import javax.swing.*;
导入java.awt.event.*;
导入java.util.List;
导入java.util.concurrent.Executor;
导入java.util.concurrent.Executors;
公共类卡拉OK机扩展JFrame实现ActionListener
{
ClassLoader Idr=this.getClass().getClassLoader();
java.applet.AudioClip everythingIsAwesome=JApplet.newAudioClip(Idr.getResource(“everythingIsAwesome.wav”);
JLabel lbl1=新的JLabel(“”);
JButton btn=新JButton(“播放”);
JPanel pnl=新的JPanel();
final Executor Executor=Executors.newCachedThreadPool();
公共卡拉ok机()
{
超级(“卡拉OK”);
设置大小(520280);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pnl.add(lbl1);
pnl.add(btn);
btn.addActionListener(此);
添加(pnl);设置可见(true);
}
已执行的公共无效操作(操作事件)
{
if(event.getSource()==btn)
{
SwingWorker worker=新SwingWorker()
{
@凌驾
受保护的Void doInBackground()引发异常
{
一切都是美好的;
这个。发布(“一切”);
睡眠(600);
这个。发布(“一切都是”);
睡眠(400);
发布(“一切都很棒!”);
《睡眠》(2000年);
这个。发布(“一切”);
睡眠(600);
这个。发布(“一切都是”);
睡眠(400);
发布(“一切都很酷”);
睡眠(400);
发布(“一切都很酷的时候”);
睡眠(400);
这个。发布(“当你在的时候一切都很酷”);
睡眠(400);
发布(“当你成为一部分时,一切都很酷”);
睡眠(150);
发布(“当你参与其中时,一切都很酷”);
睡眠(150);
发布(“当你成为一个团队的一部分时,一切都很酷”);
睡眠(150);
发布(“当你是团队的一员时,一切都很酷”);
睡眠(1000);
这个。发布(“一切”);
睡眠(600);
这个。发布(“一切都是”);
睡眠(400);
发布(“一切都很棒!”);
睡眠(1500);
本协议。发布(“何时”);
睡眠(300);
这个。发布(“当你是”);
睡眠(300);
发布(“当你活着的时候”);
睡眠(300);
发布(“当你活着的时候”);
睡眠(300);
这个。发布(“当你生活在一个城市里”);
睡眠(300);
这个。发表(“当你生活在梦中!”);
睡眠(300);
返回null;
}
@凌驾
受保护的无效进程(列表资源)
{
for(字符串文本:res)
{
lbl1.setText(文本);
}
}
};
执行人,执行人(工人);
}
}
公共静态void main(字符串[]args)
{
卡拉OK机卡拉OK=新卡拉OK机();
}
}

当我把它做成一个类文件时,它工作得很好,但是当我把它做成一个jar文件时,我得到了以下错误:

线程“AWT-EventQueue-0”java.lang.NoClassDegFoundError中出现异常:KaraokeMachine$1


有人知道如何更改代码以便swingworker在jar文件中工作吗?

该异常意味着您的类路径中缺少某个异常的内部类。因此答案很可能是:当您将类“捆绑”到该类文件中时,您忘记了类可以命名为
A$1.class

KaraokeMachine.class是“主要”类,但在这里:

SwingWorker<Void, String> worker = new SwingWorker<Void, String>() {
SwingWorker-worker=新的SwingWorker(){
您正在创建一个匿名的内部类-它进入KaraokeMachine$1.class。为了运行您的应用程序,您需要所有这些类文件才能存在


换句话说:JAR文件的内容不完整。请仔细查看如何构建该JAR文件。例如,请参阅。

该异常意味着类路径中缺少某个异常的内部类。因此答案很可能是:当您“绑定”时如果您将类放入该类文件中,您忘记了类可以命名为
A$1.class

KaraokeMachine.class是“主要”类,但在这里:

SwingWorker<Void, String> worker = new SwingWorker<Void, String>() {
SwingWorker-worker=新的SwingWorker(){
您正在创建一个匿名的内部类-它进入KaraokeMachine$1.class。为了运行您的应用程序,您需要所有这些类文件才能存在


换句话说:您的JAR文件的内容不完整。请仔细查看您如何构建该JAR文件。例如,请参阅。

异常堆栈跟踪也是文本。请不要截图,而是将其作为(格式化!)文本添加到您的问题中!好的,谢谢。我会这样做。更好-但现在您删除了“太多”.在这种情况下可以,但一般来说:复制“完整”是可以的将跟踪堆叠到问题中。编辑器总是可以删除不需要的内容,但他不能添加缺少的内容。虽然我不能从命令提示符中复制和粘贴,但如果在这种情况下没有问题,我将保留它。是的。完成。:)谢谢例外堆栈跟踪也是文本。请不要截屏