Codenameone 从VCS导入CN1项目后ClassNotFoundException
我正在尝试将一个代号为One的项目从我的私有Bitbucket repo导入到第二个工作站。我的两个工作站都在Windows上运行,并且都使用Java8。我使用IntelliJ IDEA并检查了我的所有文件是否已推送到我的repo 奇怪的是,服务器可以创建Android和iOS版本,但我无法运行模拟器,这将大大加快开发速度。这是我在尝试运行模拟器时遇到的错误:Codenameone 从VCS导入CN1项目后ClassNotFoundException,codenameone,Codenameone,我正在尝试将一个代号为One的项目从我的私有Bitbucket repo导入到第二个工作站。我的两个工作站都在Windows上运行,并且都使用Java8。我使用IntelliJ IDEA并检查了我的所有文件是否已推送到我的repo 奇怪的是,服务器可以创建Android和iOS版本,但我无法运行模拟器,这将大大加快开发速度。这是我在尝试运行模拟器时遇到的错误: "C:\Program Files\Java\jdk1.8.0_111\bin\java" "-javaagent:C:\Program
"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
在项目中
有什么想法吗
谢谢。上面列出的目录是:
C:\Users\mypc\IdeaProjects\myApp
那条路对吗
假设它是open CMD并执行以下操作:
cd C:\Users\mypc\IdeaProjects\myApp
dir
在该列表中,您应该看到几个文件。两个重要文件是:JavaSE.jar
&CodeNameOneBuildClient.jar
。我假设两者都存在,因为您可以发送构建
接下来,请执行以下操作:
dir out\production\myApp
idea编译时应该在这里存储应用程序类。我有一种感觉,这将是失踪,这是这次失败的原因。假设是这样,请在
.idea
目录中查找此路径的引用,并验证它们是否正确。解决方案:
我的存储库名称与我在主工作区中定义的项目名称不同。当项目下载到我的另一台机器上时,repo名称被用作项目名称。通过单击文件
->项目结构
更改项目名称,然后将项目名称更改回其真实名称,解决了此问题。现在模拟器工作了
感谢@Shai Almog的指导和给我这个想法。你在任何地方解析类名,比如class.forName(),还是这是专门的框架?我不解析类名。类
org.myapp.app.Main
是否位于C:/Users/mypc/IdeaProjects/myapp\out\production\myapp
下?如果从命令行运行该命令,它是否工作?是的,Main位于该目录下。不,我无法使用该命令从命令行运行模拟器。@我从中尝试了该命令,但出现以下错误:无法找到或加载主类org.myapp.app.main
。这是否可能是一个问题,因为我的项目名称是两个单词,带有空格--Main应用程序?我的主课只有一个单词。。。。谢谢。我按照您的建议运行了dir out\production\myApp
,得到了文件未找到
的响应,因此我按照您的建议检查了.dea
文件。一切看起来都很好。