我一直在尝试编写Java 9模块,但无论我做什么,我都会收到错误"包是空的还是不存在"。我已经尝试在线搜索预期的目录布局,并尝试了我能想到的目录布局的每个变体,但没有任何作用。
例如,这是我试过的一个布局
bar.foo/module-info.java
module bar.foo {
exports bar.foo;
}
bar.foo/bar/foo/wtf.java
package bar.foo;
public class wtf {
}
但是,编译仍然会像往常一样给出相同的错误。
> javac bar.foo/module-info.java
bar.foo/module-info.java:2: error: package is empty or does not exist: bar.foo
exports bar.foo;
^
1 error
答案 0 :(得分:2)
应该起作用的命令是:
javac bar.foo/module-info.java bar.foo/bar/foo/wtf.java
原因是,您正在尝试编译一个需要包存在的类,例如bar.foo
。但由于您还没有创建一个,编译器会抛出上述错误。
它不是关于目录布局,而是编译器评估的.class
。提供其他类(bar.foo/bar/foo/wtf.java
)会在该包中创建wtf.class
,因此编译器也会继续编译module-info.class
。
答案 1 :(得分:1)
我在尝试将EDİT :
添加到我没有源代码的JAR文件时遇到了同样的问题。我必须添加一个空类bar.foo.Bogus并使用
$sid = $_SESSION['UserId'];
$stmt = $mysqli->prepare("SELECT u.id, u.username, s.user_id, s.name, p.user_id, p.pname FROM stores AS s INNER JOIN products AS p ON p.store_id = s.store_id INNER JOIN users AS u ON u.id = p.user_id WHERE s.user_id = ?");
$stmt->bind_param('i', $sid);
$stmt->execute();
$stmt->bind_result($id, $username, $user_id, $name, $user_id, $pname);
$stmt->fetch();
$stmt->close();
echo $pname;
echo"<br>" .$name;
echo "<br>".$username;
进行编译。之后您可以删除伪类。