从VCS导入CN1项目后的ClassNotFoundException

时间:2018-01-31 20:05:50

标签: codenameone

我正在尝试将我的私人Bitbucket仓库中的Codename One项目导入第二个工作站。我的两个工作站都运行在Windows上并使用Java 8.我使用IntelliJ IDEA并检查我的所有文件都已被推送到我的仓库。

奇怪的是,服务器可以创建Android和iOS版本,但我无法运行我的模拟器,这将大大加快开发速度。这是我在尝试运行模拟器时遇到的错误:

"C:\Program Files\Java\jdk1.8.0_111\bin\java" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.2\lib\idea_rt.jar=49613:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.2\bin" -Dfile.encoding=UTF-8 -classpath C:/Users/mypc/IdeaProjects/myApp\out\production\myApp;C:/Users/mypc/IdeaProjects/myApp\src;C:/Users/mypc/IdeaProjects/myApp\lib\CodenameOne.jar;C:/Users/mypc/IdeaProjects/myApp\JavaSE.jar;native/internal_tmp;lib/impl/cls com.codename1.impl.javase.Simulator org.myapp.app.Main
java.lang.ClassNotFoundException: org.myapp.app.Main
            at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
            at java.lang.ClassLoader.findSystemClass(ClassLoader.java:1004)
            at com.codename1.impl.javase.ClassPathLoader.findClass(ClassPathLoader.java:100)
            at com.codename1.impl.javase.ClassPathLoader.loadClass(ClassPathLoader.java:50)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:264)
            at com.codename1.impl.javase.Executor$1.run(Executor.java:86)
            at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
            at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
            at java.awt.EventQueue.access$500(EventQueue.java:97)
            at java.awt.EventQueue$3.run(EventQueue.java:709)
            at java.awt.EventQueue$3.run(EventQueue.java:703)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

但是,我的Main在项目中。

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:2)

<强> SOLUTION:

我的存储库名称与我的主要工作区上定义的项目名称不同。将项目下载到我的其他计算机时,repo名称用作项目名称。点击max_w_length + 1 - &gt;更改项目名称File然后将项目名称更改回其真实姓名修复了问题。现在模拟器正常工作。

感谢@Shai Almog的指示和给我这个想法。

答案 1 :(得分:0)

上面列出的目录是:C:\Users\mypc\IdeaProjects\myApp

这条路是否正确?

假设它是开放式CMD并执行以下操作:

cd C:\Users\mypc\IdeaProjects\myApp
dir 

在该列表中,您应该看到几个文件。两个重要文件是:JavaSE.jar&amp; CodeNameOneBuildClient.jar。我假设两者都在那里,因为你可以发送一个版本。

接下来这样做:

dir out\production\myApp

这是构思应该在编译时存储应用程序类的地方。我有一种感觉,这将失踪,这是失败的原因。假设在.idea目录中查看对此路径的引用并验证它们是否正确。