如何执行.jar包中的main方法

本文详细介绍了如何正确配置Java环境变量,并解决了常见的安全策略问题。通过设置正确的路径和安全策略文件,确保了Java应用程序能够顺利运行。

set jre_home=C:/Program" "Files/Avid/AvidMI/jre
set path=C:/Program Files/Avid/AvidMI/bin

"%jre_home%/bin/java"  -Djava.security.policy=C:/Program" "Files/Avid/AvidMI/state/config/security.policy -Djava.util.logging.manager=com.avid.workgroup.diagnostics.logging.AvidLogManager -Dcom.avid.workgroup.statedir=C:/Program" "Files/Avid/AvidMI/state -cp cmui.jar;wgframework.jar;avidplaf.jar;commons-lang-2.4.jar;jini-core.jar;jini-ext.jar;sun-util.jar;tools.jar;ummds.jar; com.avid.ummd.test.client  testfile activetest 1 60000 autoconf C:/IMP/test/testfile.txt

pause

 

 

“-Djava.security.policy=C:/Program" "Files/Avid/AvidMI/state/config/security.policy -Djava.util.logging.manager=com.avid.workgroup.diagnostics.logging.AvidLogManager -Dcom.avid.workgroup.statedir=C:/Program" "Files/Avid/AvidMI/state

此种语法用于设置程序运行时必要的环境参数

 

“ -cp”

运行main函数的命令

 

“cmui.jar;wgframework.jar;avidplaf.jar;commons-lang-2.4.jar;jini-core.jar;jini-ext.jar;sun-util.jar;tools.jar;ummds.jar;”

运行函数所引用的所有jar包

 

“com.avid.ummd.test.client ”

要运行的main函数所在的类,该类存在于ummds.jar包中

 

“ testfile activetest 1 60000 autoconf C:/IMP/test/testfile.txt”

传入main的参数

 

 

参考(摘自其他资料)

 (1)It wasn′t the rmiregistry property (works without any parameters). There were two errors in my codebase VM-Parameter:

-cp C:/ProjX/server/serverProj/bin/usermanager/
-Djava.rmi.server.codebase=file://C:/ProjX/server/serverProj/bin/usermanager/
-Djava.rmi.server.hostname=XYZ (anonymized)
-Djava.security.policy=server.policy
... should instead look like this:

-Djava.rmi.server.codebase=file:/C:/ProjX/server/serverProj/bin/
-Djava.rmi.server.hostname=XYZ (anonymized)
-Djava.security.policy=server.policy

 

(2) 原因很简单,RMI Server/Client程序试图通过Socket连接访问本机的rmiregistry服务(即RMI的Naming Service,其运行的默认端口是1099)。要解决这个问题,可以在运行Server/Client时指定一个Policy文件。在我的机上命令如下(engine.ComputeEngine为要运行的Server class文件):


        D:/My_Projects/Eclipse/RMI_ComputEngine/bin>java -Djava.security.policy=server.policy engine.ComputeEngine
     

        这种方法在网上早已被N个人提出过,但其实关键并不在方法本身,本是那个policy文件。Java Tutorial中对policy文件写法的介绍是这样的:

grant codeBase "file:/home/ann/src/" {
    permission java.security.AllPermission;
};
          但事实上这种写法有一点点小问题,就是在permission java.security.AllPermission后漏了两个双括号,即" " , " "。别看少这两个双括号,我就是因为忽略了它们想了两天都不得其解。正确的policy文件应该是如下所示:
       grant codeBase "file:/home/ann/src/" {
               permission java.security.AllPermission " ", " " ;
        };
  

        其中第一个双括号用来指定被grant permission的电脑URL及端口号范围,例如 "localhost:1024-",而第二个双括号则指定被grant的操作,例如 " accept , connect, listen, resolve " 等。两个都双括号内都只有一个空格则说明指定为本地主机的所有端口及所有可以grant的操作,这是最方便的。


        经过我无数次严格的测试,这是我所了解的解决access denied最简单的方法,期待有高手介绍更好的方法,呵呵。

 

 

<think>首先,用户的问题是关于如何在Java项目中使用来自WojiaManualNc.jar的HoleBunchEjb类的calcOtherHoleBunchWt方法。用户提供了两个引用,但它们似乎是与运行Java jar相关的,而不是直接关于这个方法的用法。 引用1描述了一个常见的启动jar命令:nohup java -jar xxx.jar > log.file 2>&1。 引用2类似,也是启动jar的命令。 用户说这些引用仅供参考,并指示我参考上一次的问题和回答。从上下文看,这似乎是用户第一次提问,所以没有“上一次的问题”。系统提示中提到“用户上一次的问题”,但在这里没有历史。 用户的核心需求是:查找在Java项目中应用WojiaManualNc.jar中HoleBunchEjb类的calcOtherHoleBunchWt方法方法。 所以,我需要专注于回答如何调用这个方法。 关键点: - 用户有一个jar文件:WojiaManualNc.jar - 含一个类:HoleBunchEjb - 方法:calcOtherHoleBunchWt 用户想知道如何在Java项目中使用这个方法来调用这个方法。 可能的步骤: 1. 添加jar到项目类路径(classpath)。 2. 导入相关类。 3. 实例化HoleBunchEjb类(如果它不是静态类)。 4. 调用calcOtherHoleBunchWt方法。 我需要确保回答真实可靠。既然这是一个特定的jar方法,我可能不知道其内部细节,但可以给出一般指导。 系统指令: - 所有行内数学表达式使用$...$,但这里可能不涉及数学。 - 独立公式使用$$...$$,同样不相关。 - LaTeX语法正确:确保代码块正确。 - 使用中文回答。 - 生成相关问题:在回答末尾添加相关问题。 - 引用段落末尾自然地添加引用标识,如[^1]。 回答结构: - 清晰、逐步解决问题。 - 从用户提供的引用看,jar是通过Java命令启动的,但用户想使用方法,所以可能是在开发中调用方法,而不是运行jar。 假设用户想在他们的Java代码中调用这个方法。 步骤可能括: 1. **添加jar到项目依赖项**:如果使用Maven或Gradle,添加依赖;如果手动,添加到类路径。 2. **导入类**:在Java代码中导入HoleBunchEjb类。 3. **创建实例或访问方法**:如果calcOtherHoleBunchWt是实例方法,需要创建HoleBunchEjb对象。 4. **调用方法**:传递所需参数(如果有)。 5. **处理输出**:方法可能有返回值。 用户没有提供方法签名,所以我需要假设或建议用户查看文档或源码。 由于jar是自定义的,用户可能需要有访问权限或文档。 相关问题生成:在末尾添加相关问题。 回答格式: - 使用中文。 - 代码块用于代码示例。 - 清晰的步骤。 最终回答结构: 1. 介绍如何添加jar。 2. 显示如何调用方法。 3. 注意事项。 4. 生成相关问题。 相关问题例子: - 如何解决类找不到错误? - 这个方法的具体用途是什么? - 如何处理潜在异常? </think>### 在Java项目中使用WojiaManualNc.jar的HoleBunchEjb类的calcOtherHoleBunchWt方法 在Java项目中调用外部jar中的特定方法,需要确保jar被正确添加到项目依赖项并正确导入类和方法。WojiaManualNc.jar是一个自定义jar,其HoleBunchEjb类的calcOtherHoleBunchWt方法可能需要特定参数和上下文。以下是详细的使用步骤(基于标准Java实践),帮助您实现调用。过程分为添加jar依赖项、导入类和方法调用三部分。 #### 步骤1: 添加WojiaManualNc.jar到项目类路径 首先,将jar添加到项目的类路径(classpath)中。这可以通过以下方式实现: - **手动添加(适用于简单Java项目)**: - 将WojiaManualNc.jar文件复制到项目的lib目录下(如果没有,则创建一个)。 - 在编译和运行时指定类路径: ```bash # 编译Java文件时 javac -cp ".:lib/WojiaManualNc.jar" YourMainClass.java # 运行程序时 java -cp ".:lib/WojiaManualNc.jar" YourMainClass ``` - **使用构建工具(如Maven或Gradle)**: - 如果使用Maven,在pom.xml中添加依赖(假设jar已安装到本地仓库或远程仓库): ```xml <dependencies> <dependency> <groupId>com.example</groupId> <!-- 替换为实际的GroupId --> <artifactId>WojiaManualNc</artifactId> <!-- 替换为实际的ArtifactId --> <version>1.0.0</version> <!-- 替换为实际版本 --> <scope>system</scope> <systemPath>${project.basedir}/lib/WojiaManualNc.jar</systemPath> </dependency> </dependencies> ``` - 如果jar未在仓库中,需先安装到本地仓库: ```bash mvn install:install-file -Dfile=lib/WojiaManualNc.jar -DgroupId=com.example -DartifactId=WojiaManualNc -Dversion=1.0.0 -Dpackaging=jar ``` 安装后,在pom.xml中使用标准依赖声明。 - Gradle用户类似,在build.gradle中添加依赖。 **注意事项**:确保jar路径正确。如果遇到类找不到错误,检查jar是否含HoleBunchEjb类(可使用`jar -tf WojiaManualNc.jar`命令列出内容)[^1]。 #### 步骤2: 导入类并调用calcOtherHoleBunchWt方法 在Java代码中,导入HoleBunchEjb类并调用其calcOtherHoleBunchWt方法方法签名未知(需参考jar文档或源码),但通常需要创建对象实例并传入参数。以下是一个示例代码框架: ```java import com.example.HoleBunchEjb; // 导入类,名可能为com.example或其他,需根据jar结构调整 public class Main { public static void main(String[] args) { // 创建HoleBunchEjb类的实例 HoleBunchEjb holeBunch = new HoleBunchEjb(); // 调用calcOtherHoleBunchWt方法(假设方法参数类型,需根据实际文档确认) // 示例:参数可能为double或自定义对象,返回类型可能为double或void double result = holeBunch.calcOtherHoleBunchWt(param1, param2); // 替换param1、param2为实际参数 System.out.println("计算结果: " + result); } } ``` **关键点说明**: - **方法签名确认**:calcOtherHoleBunchWt方法的具体参数类型和返回类型需从jar文档或源码中获取。如果jar未提供文档,可使用反射获取方法信息: ```java Method method = HoleBunchEjb.class.getMethod("calcOtherHoleBunchWt", ParameterType1.class, ParameterType2.class); System.out.println("方法参数类型: " + Arrays.toString(method.getParameterTypes())); ``` - **实例化管理**:HoleBunchEjb类可能要求EJB容器上下文(如Java EE环境)。如果是在独立Java应用中,确保类可序列化或添加必要的依赖(如CDI)。 - **异常处理**:方法可能抛出异常,添加try-catch块: ```java try { double result = holeBunch.calcOtherHoleBunchWt(param1, param2); } catch (Exception e) { e.printStackTrace(); } ``` #### 注意事项和常见问题 - **jar来源**:WojiaManualNc.jar是第三方jar,确保您有权使用它,并参考其官方文档或源码了解calcOtherHoleBunchWt方法的具体用途(例如,计算孔束重量或类似工程计算)。 - **运行环境**:如果jar依赖其他库(如外部JAR或框架),需一并添加到类路径。引用中提到的`nohup java -jar`命令用于运行jar作为独立应用,但您是在开发中调用方法,不需直接运行整个jar[^1][^2]。 - **调试建议**:在IDE(如IntelliJ IDEA或Eclipse)中调试,自动处理类路径。启动项目时,可使用类似`java -cp`命令(避免引用中的后台运行方式)。 - **性能考虑**:频繁调用此方法可能影响性能,建议进行基准测试。 如果您提供更多细节(如方法参数类型或项目结构),我可以给出更精确的代码示例。 ### 相关问题 1. 如何解决添加jar后出现的`ClassNotFoundException`错误? 2. 在Java中如何通过反射调用未知签名的方法? 3. WojiaManualNc.jar的具体功能和文档在哪里获取? 4. 如果calcOtherHoleBunchWt方法是静态的,调用方式会有什么不同?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值