Java try catch循环在1个循环后未捕获

Java try catch循环在1个循环后未捕获,java,try-catch,vlcj,Java,Try Catch,Vlcj,循环一次后,程序在新组件行抛出异常并退出。如何循环直到用户选择一个有效的文件 while(!next){ NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), folderChooser()); try{ EmbeddedMediaPlayerComponent a = new EmbeddedMediaPlayerComponent(

循环一次后,程序在新组件行抛出异常并退出。如何循环直到用户选择一个有效的文件

    while(!next){
            NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), folderChooser());
            try{
                EmbeddedMediaPlayerComponent a = new EmbeddedMediaPlayerComponent();
                a.release();
                next = true;
            }
            catch(Exception e){
                next = false;
            }
    }
错误:

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class uk.co.caprica.vlcj.binding.LibVlc
    at uk.co.caprica.vlcj.binding.LibVlcFactory.create(LibVlcFactory.java:158)
    at uk.co.caprica.vlcj.player.MediaPlayerFactory.<init>(MediaPlayerFactory.java:236)
    at uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.onGetMediaPlayerFactory(EmbeddedMediaPlayerComponent.java:278)
    at uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.<init>(EmbeddedMediaPlayerComponent.java:168)
    at sv1.MainRun.try1(MainRun.java:107)
    at sv1.MainRun.<init>(MainRun.java:82)
    at sv1.Start.main(Start.java:7)
线程“main”java.lang.NoClassDefFoundError中出现异常:无法初始化类uk.co.caprica.vlcj.binding.LibVlc 位于uk.co.caprica.vlcj.binding.LibVlcFactory.create(LibVlcFactory.java:158) 在uk.co.caprica.vlcj.player.MediaPlayerFactory。(MediaPlayerFactory.java:236) 位于uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.onGetMediaPlayerFactory(EmbeddedMediaPlayerComponent.java:278) 位于uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.(EmbeddedMediaPlayerComponent.java:168) 在sv1.MainRun.try1(MainRun.java:107) 在sv1.MainRun。(MainRun.java:82) 位于sv1.Start.main(Start.java:7) 这是可行的,但绝对不建议将没有错误的情况作为循环的终止条件。有没有办法在不崩溃的情况下检查这个?希望您正在使用的API包含一些有关函数或其他内容的信息。如果没有,你可能会做一些反思。任何事情都比用错误代替逻辑要好


更多信息:

好吧,我会尝试移动try行

while(!next){
try{
        NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), folderChooser());

            EmbeddedMediaPlayerComponent a = new EmbeddedMediaPlayerComponent();
            a.release();
        }
        catch(Exception e){

        }
}

参见以下修改

try
{
while(!next)
{
   NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), folderChooser());

   EmbeddedMediaPlayerComponent a = new EmbeddedMediaPlayerComponent();
   a.release();
   next = true;
}
}
catch(Exception e){
next = false;
}

类路径上没有
LibVlc
绑定;在catch块中,如果要忽略错误并循环。。。。不知道为什么,那是什么意思?我怎样才能把它们送到那里。我知道,当用户为VLCJ选择正确的文件时,程序会工作。
NoClassDefFoundError
Error
的子类,而不是
Exception
。因此,
catch(异常e)
不会捕获它。但是,我不建议您更改
捕获
,因为需要以某种方式解决此类错误。但是,我对
EmbeddedMediaPlayerComponent
一无所知。(chrylis可能有答案。)@markg continue不起作用,不幸的是不起作用。ncdx2来自哪里?它工作得很好。我的意思是没有isOkeyDokey()函数。谢谢(我的程序是一个黑客工作,无论如何,所以多一点黑客是公正的课程)真的!我真的认为我需要删除答案。很乐意帮忙。我刚刚自学了一些东西
catch(Someclass x)
将捕获作为
Someclass
实例或其子类的任何
Throwable
;无论
Someclass
异常
还是
错误
,这都是正确的。
try
{
while(!next)
{
   NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), folderChooser());

   EmbeddedMediaPlayerComponent a = new EmbeddedMediaPlayerComponent();
   a.release();
   next = true;
}
}
catch(Exception e){
next = false;
}