- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是java编程新手,我创建了一个集成了selenium、apachepoi和java swing的程序。在编译程序时,我能够成功编译它并且程序运行正常;然而,当我尝试为我的程序制作 jar 文件时,它显示 java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Row
错误。
下面是我的程序的文件夹结构c:\users\userid\documents\java\crazyrunner
java 文件的名称为 CrazyRunner.java
,位于crazyrunner 文件夹
该程序位于名为crazyrunner的包中(程序的第一行以packagecrazyrunner
开头)
编译时使用的命令(不确定是否相关)javac -编码 UTF8crazyrunner\CrazyRunner.java
编译导致在父 (java) 和子 (crazyrunner) 文件夹中创建 .class 文件
用于运行的命令javacrazyrunner.CrazyRunner
(这工作得很好)
用于生成 jar 的命令jar cvfm CrazyRunner.jar manifest.mf *.classcrazyrunner\*.class
jar 命令的结果成功,并且crazyrunner 内和crazyrunner 外部(父文件夹“Java”内)的所有类文件都添加到jar 中(CrazyRunner.jar
)
manifest.mf 文件的数据如下 list 版本:1.0
创建者:Eric Stanley
主类:crazyrunner.CrazyRunner
类路径:“C:\poi-3.10-beta2\poi-3.10-beta2-20130904.jar”
“C:\poi-3.10-beta2\poi-examples-3.10-beta2-20130904.jar”
“C:\poi-3.10-beta2\poi-excelant-3.10-beta2-20130904.jar”
..
以 2 个新行结尾
不确定我错过了什么:-(我花了一整天的时间来解决这个问题,除了发布这个问题之外别无选择!!是的,我确实尝试了 stackoverflow 已经有的所有选项,但没有任何结果: -(
选项 1:打开控制面板
进入系统
转到高级系统属性
然后是环境变量
在“系统变量”中,单击“添加”
新变量名称:_JAVA_OPTIONS
新变量值:-Xmx512M(也尝试过-Xmx1024M)
单击“确定”
选项 2:重新安装 Java
选项 3:打开运行框
输入msconfig
服务(选项卡)
选中“隐藏所有 Microsoft 服务”
点击“全部禁用”(按钮)
点击“应用”
单击“确定”
选项 4:使用类路径更新manifest.txt文件
非常感谢您的帮助
注意:
该程序打开一个 GUI(当我输入 javacrazyrunner.CrazyRunner
时),当我尝试在命令提示符中单独给出 CrazyRunner.jar
时,它会抛出一个错误,指出 Java 虚拟机启动器。发生java异常
PS:
我使用的是 Windows 8,java 的版本是 1.7.0_51,我没有使用任何 IDE,我有预感这可能是由于类路径中的 jar 文件太多所致。如果是,那么迫切需要解决这个问题!!
最佳答案
谢谢大家的回复,我终于找到答案了。 Gradle !! :-)
正如我所假设的,已创建的 .jar 文件没有任何更改;这意味着我使用 list 文件创建的 jar 文件是正确的,问题是编译时可用的类文件在运行时不可用。因此,我使用了用于编译的所有 jar 文件以及我已经创建的 jar 文件 (CrazyRunner.jar
) 来使用 gradle 构建新的 jar 文件。
遵循的步骤:
从http://downloads.gradle.org/distributions/gradle-1.10-all.zip下载了gradle 1.10
提取“C:\gradle-1.10
”下的文件在管理员模式下打开cmd提示符并输入
"C:\Windows\system32\rundll32.exe"sysdm.cpl,EditEnvironmentVariables
添加了 GRADLE_HOME
环境变量,其值为 C:\gradle-1.10\bin
(在系统变量部分下)
将 %GRADLE_HOME%
添加到 PATH
变量(在系统变量部分下)
添加了 JAVA_OPTS
环境变量,其值为 -Xms256m -Xmx2048m
在项目文件夹 (crazyrunner) 中创建了一个名为 build.gradle
的新文件
在build.gradle
文件
应用插件:'java'
sourceCompatibility = 1.6
目标兼容性= 1.8
defaultTasks = ['clean', 'jar']
依赖项{
编译 fileTree(dir: 'corelib', include: ['*.jar'])
编译 fileTree(dir: 'libs', include: ['*.jar'])
}
jar{
来自 {configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
list { 属性 'Main-Class': 'CrazyRunner' }
}
从 C:\poi-3.10-beta2
和 C:\selenium-2.39.0
复制所有 jar 文件(仅通过 .jar 搜索)并粘贴到我的项目文件夹(在crazyrunner内)内的单独文件夹(名为libs
)
将我已经创建的 jar(CrazyRunner.jar
是按照原始问题中提到的方式创建的)文件复制到我的项目文件夹(在crazyrunner内)中的一个单独的文件夹(名为corelib
)
注意:此时,我的项目文件夹 (crazyrunner) 有 2 个子文件夹(libs
和 corelibs
)和 1 个文件 (build.gradle
)
打开命令提示符(普通模式)并遍历到项目文件夹(crazyrunner)
输入命令gradle build
就这样!!
我花了大约 20 分钟才成功完成构建,经过一夜的搜索,我发现它可以工作了!!
我的学习:
Gradle 基本上集成了 jar 中所有已编译的文件(如果按照上面的方式构建,如 build.gradle
文件),这样新创建的 jar 文件在运行时不需要任何额外的依赖项,这是一个优势;但是,由于所有依赖文件都添加到 jar 中,因此文件大小很大,但即使没有 selenium 和 apache-poi,该文件也可以在任何系统中运行(我希望;-))
谢谢你们,特别感谢 jbaliuka :-) 干得好!
关于java.lang.NoClassDefFoundError : org/apache/poi/ss/usermodel/Row Error during runtime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21647650/
首先我要说的是,我主要是一名 iOS 开发人员,最近才开始探索全栈开发的惊心动魄的冒险。我是 PHP 和 MySQL 的新手。话虽如此,我有一个问题,我希望需要一个直接的解决方案。 我正在为一个拥有预
我的表单上有 GridEx 对象并且... 我想用 for...next 循环在其中添加一些项目。实际上我找不到任何方法来添加带有自定义数据的新行。 我想在那个 GridEx 对象中选择一个特定的行。
我有以下数据框 df1 = DataFrame([['OBJ1', 10, 'BX', 'pool1', 'OBJ2'],['OBJ2', 0, '', '', 'OBJ1'],['OBJ3', 1
所以我有以下成员(member)历史表 User_ID | Start date | End Date | Type(0-7) | ---------------------------
我不擅长sql。我查看了 stackoverflow,但似乎对我没有任何用处。所以,我正在寻求帮助。是否可以根据行中的第一个字段将 2 行合并为 1 行。 我在 mysql 中执行此操作。我将展示示例
我了解 flex sm、md、lg 列的概念,但不了解应用于行的概念。弹性行有什么作用? sm、md、lg 尺寸应用于弹性行时意味着什么? 最佳答案 简答 - .row只是网格的容器 col .然而,
我遇到麻烦的地方 我相信我需要使用 COUNT;但是,我不知道如何将一行与同一列中的每一行进行比较,然后计算有多少行比相应行少/便宜。提前谢谢您! 这是我试图解决的官方问题: “使用示例架构,编写一条
我有以下 3 个相关表 Schools Departments Classes --------------- ------------------ --
我有代码: g, g_err = data[:, 4:6].T 我不知道[:, 4:6]的含义 尤其是第一个: .T 表示转置吗? 最佳答案 您有一个名为 data 的二维矩阵,您的代码从第一维获取所
我在行单击上附加了一个事件,在行内的复选框更改上附加了一个事件。 如何防止首先触发行单击? $(document).on('click', 'table tr', function() { con
我有一个场景,我需要连接两个 SQL 表并且正在为如何做而苦恼。假设在表 A 中我有这个: ColA ColB ColC ColD 45 55 17 45 45
我用谷歌表格记录我们俱乐部的出席率。该表格链接到另一个谷歌表格,因此可以自动创建一个名字列表,并按字母顺序排序。在这张表格中,我还根据我们所做的活动,在人的名字旁边手动输入点数。。问题是,由于姓名列表
这个问题在这里已经有了答案: What is a NullPointerException, and how do I fix it? (12 个回答) 5年前关闭。 编辑:我正在使用此代码读取 Ex
我是 R 的初学者。我希望你能帮助我解决我的问题。我的数据集中的文件名包含大量信息。我必须提取这些信息来创建单独的变量。 首先我使用 splits <- t(as.data.frame(strspli
假设我有一个 CSR 格式的矩阵,将一行(或多行)设置为零的最有效方法是什么? 下面的代码运行得很慢: A = A.tolil() A[indices, :] = 0 A = A.tocsr() 我不
我遇到了一个相当复杂的问题。我有一个包含三行的数据框:id、info 和 rownum。数据如下所示: id info row 1 a 1 1 b 2
我正在阅读learnjsdata.com并遇到了这种不熟悉的 JavaScript 语法。语法如下: lookupIndex[row[lookupKey]] = row; 有人知道这里发生了什么吗?我
我有一个表格,收集每周足球比赛的结果。 根据每场比赛的结果,我根据 ID 为玩家输入 3、1 或 0 分,具体取决于他们是赢、平还是输。 id Name A1 B1 C1 A2 B2
我有一个 mysql 表: 在表1中,我有3列:Bidang、Keahlian、Nilai。在 saran 列的表结果中,我想根据 bidang 组合 keahlian,但如果 nilai > 0,则
我有一个看起来像这样的表 | ID | item1 | item 2 | | 1 | A1 | B1 | | 2 | A2 |
我是一名优秀的程序员,十分优秀!