import org.apache.commons.math4.util报错
时间: 2023-09-03 14:08:38 浏览: 143
这个错误可能是因为你的项目中没有引入 Apache Commons Math 依赖。
你可以在你的项目中添加以下 Maven 依赖来解决这个问题:
```
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math4</artifactId>
<version>4.0</version>
</dependency>
```
如果你不是使用 Maven 项目,你可以下载 Apache Commons Math 的 jar 文件并将其添加到你的项目的 classpath 中。
相关问题
为什么我的idea中没有import org.apache.commons.math3.distribution.EnumeratedDistribution; import org.apache.commons.math3.util.Pair;
这可能是因为你的项目中没有引入Apache Commons Math 3库。你可以按照以下步骤引入该库:
1. 下载Apache Commons Math 3的jar包。你可以在官网(http://commons.apache.org/proper/commons-math/)上下载最新版本的jar包。
2. 将下载的jar包复制到你的项目中,例如将其复制到项目根目录下的lib文件夹中。
3. 在你的项目中添加该库的引用。具体方法取决于你使用的IDE。如果使用的是IntelliJ IDEA,你可以按照以下步骤进行操作:
- 在IntelliJ IDEA中打开你的项目。
- 点击菜单栏中的File -> Project Structure。
- 在左侧面板中选择Modules,然后在右侧面板中选择你的项目模块。
- 在右侧面板的Dependencies选项卡中,点击加号按钮,选择“JARs or directories”。
- 在弹出的文件选择框中,选择你刚刚复制的jar包所在的文件夹(例如lib文件夹),然后点击OK。
- 点击Apply按钮保存更改。
完成以上步骤后,你就可以在你的项目中使用Apache Commons Math 3库了。
将以下JAVA代码转为PHP代码:import java.security.spec.*; import java.security.*; import java.util.*; import org.apache.commons.lang3.StringUtils; public class SignUtils { public static String signSHA256(byte[] message, byte[] privateKeyBytes) throws Exception { PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKeyBytes)); KeyFactory keyf = KeyFactory.getInstance("RSA"); PrivateKey privateKey = keyf.generatePrivate(priPKCS8); Signature sign = Signature.getInstance("SHA256withRSA"); sign.initSign(privateKey); sign.update(message); return Base64.getEncoder().encodeToString(sign.sign()); } public static String makeSignStr(Map<String, String> params) { List<String> keys = Lists.newArrayList(); for (Map.Entry<String, String> entry : params.entrySet()) { if ("sign".equals(entry.getKey())) { continue; } if (StringUtils.isNotBlank(entry.getValue())) { keys.add(entry.getKey()); } } Collections.sort(keys); List<String> temp = Lists.newArrayList(); for (String key : keys) { String value = params.get(key); temp.add(key + "=" + value); } return StringUtils.join(temp, "&"); } public static void main(String[] args) { try { //读取私钥 byte[] privateKeyBytes = null; Map<String, String> params = new HashMap<>(); params.put("mch_id", "商户编号"); params.put("app_id", "应用ID"); params.put("timestamp", "1541661668"); params.put("nonce_str", "aiz04enx0a2"); params.put("sign_type", "SHA"); params.put("version", "2.0"); params.put("content", "VBDExvz6/k56B1S5n7n3uOvI2sxZixcsV0Tdld92ym0CpnN8ooiCkXPgg0N1z8NC"); //签名 String sign = SignUtils.signSHA256(makeSignStr(params).getBytes("UTF-8"), privateKeyBytes); } catch (Exception e) { e.printStackTrace(); } } }
以下是将JAVA代码转为PHP代码的结果:
```php
<?php
use phpseclib\Crypt\RSA;
use phpseclib\Math\BigInteger;
class SignUtils {
public static function signSHA256($message, $privateKeyBytes) {
$rsa = new RSA();
$rsa->loadKey($privateKeyBytes);
$rsa->setSignatureMode(RSA::SIGNATURE_PKCS1);
$signature = $rsa->sign($message);
return base64_encode($signature);
}
public static function makeSignStr($params) {
$keys = array();
foreach ($params as $key => $value) {
if ($key === 'sign' || empty($value)) {
continue;
}
$keys[] = $key;
}
sort($keys);
$temp = array();
foreach ($keys as $key) {
$value = $params[$key];
$temp[] = $key . '=' . $value;
}
return implode('&', $temp);
}
public static function main() {
try {
// 读取私钥
$privateKeyBytes = null;
$params = array(
'mch_id' => '商户编号',
'app_id' => '应用ID',
'timestamp' => '1541661668',
'nonce_str' => 'aiz04enx0a2',
'sign_type' => 'SHA',
'version' => '2.0',
'content' => 'VBDExvz6/k56B1S5n7n3uOvI2sxZixcsV0Tdld92ym0CpnN8ooiCkXPgg0N1z8NC'
);
// 签名
$sign = SignUtils::signSHA256(
utf8_encode(SignUtils::makeSignStr($params)),
$privateKeyBytes
);
} catch (Exception $e) {
echo $e->getMessage();
}
}
}
```
阅读全文